如何使用LocalDate从spring查询elasticsearch
有这个搜索查询: 最终 SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(QueryBuilders.rangeQuery("updateTime").gte(LocalDate.now())).build(); 最终名单 有此搜索查询: final SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(QueryBuilders.rangeQuery("updateTime").gte(LocalDate.now())).build(); final List<ActivityValue> listOf = elasticsearchTemplate.queryForList(searchQuery, ActivityValue.class); 使用实体 ActivityValue: @Document(indexName = "tracking1", type = "activity") public class ActivityValue { @Id private String id; @Field(type = FieldType.Date, index = false, store = true, format = DateFormat.custom, pattern = "yyyy-MM-dd") @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd") private LocalDate updateTime; @Field(type = FieldType.Object, includeInParent = true) private Vendor vendor; @Field(type = FieldType.Object, includeInParent = true) private QCriteria quality; public ActivityValue() { } //setter and getter } 如果我运行查询并尝试接收列表,我会收到以下异常: caused by: java.io.IOException: can not write type [class java.time.LocalDate] 实体之前存储的实际日期为LocalDate。 我不确定查询 Elasticsearch 并解决此错误的最佳/最简单方法是什么。有人可以帮忙吗? final SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(QueryBuilders.rangeQuery("updateTime").gte(LocalDate.now().toString())).build(); final List<ActivityValue> listOf = elasticsearchTemplate.queryForList(searchQuery, ActivityValue.class); 我通过使用 LocalDate.now().toString() 而不是 LocalDate.now() 解决了这个问题 而是使用自定义模式(您还必须在任何 @Field 上设置),您可以从 objectmapper 禁用默认行为。默认行为是将 LocalDate 转换为时间戳。 //For LocalDateTime usage final ObjectMapper objectMapper = new ObjectMapper().registerModule(new JavaTimeModule()); objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false); final JacksonJsonpMapper jsonpMapper = new JacksonJsonpMapper(objectMapper); 这样做,您可以确保自动以 yyyy-MM-ddThh:mm:ss.SSSZ 格式存储,而不是在 epoc 时间后的几毫秒内存储。 现在您可以将数据设置为: static class Data { private LocalDateTime dateTime; } 并使用类似于以下的查询进行搜索: RangeQuery rangeQuery = new RangeQuery.Builder().field("dateTime").lt(JsonData.of(LocalDateTime.now())).build(); 没有问题或任何额外的努力。
我想从给定日期获取下一年月份的最后一天 这是我的做法: $copy = new \DateTime(); $lastDay = new \DateTime($copy->add((new \DateInterval('P1Y')))->format...
我无法让策略在我的 Laravel 项目中工作,我安装了一个新项目来从头开始测试,我有这个控制器: 我无法让策略在我的 Laravel 项目中工作,我安装了一个新项目来从头开始测试,我有这个控制器: <?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; use App\Models\User; class UserController extends Controller { public function index() { $this->authorize('viewAny', auth()->user()); return response("Hello world"); } } 本政策: <?php namespace App\Policies; use Illuminate\Auth\Access\Response; use App\Models\User; class UserPolicy { public function viewAny(User $user): bool { return true; } } 这是我的模型 <?php namespace App\Models; // use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Laravel\Sanctum\HasApiTokens; class User extends Authenticatable { use HasApiTokens, HasFactory, Notifiable; /** * The attributes that are mass assignable. * * @var array<int, string> */ protected $fillable = [ 'name', 'email', 'password', ]; /** * The attributes that should be hidden for serialization. * * @var array<int, string> */ protected $hidden = [ 'password', 'remember_token', ]; /** * The attributes that should be cast. * * @var array<string, string> */ protected $casts = [ 'email_verified_at' => 'datetime', 'password' => 'hashed', ]; } 我收到错误 403:此操作未经授权。我希望有人能帮助我解决我的问题。谢谢你 我也尝试过修改AuthServiceProvider文件,但没有任何改变。 必须在 App\Providers\AuthServiceProvider 中添加您的策略吗? protected $policies = [ User::class => UserPolicy::class ]; 您需要指定您正在使用的模型。具体来说,就是User。因此,传递当前登录的用户: $this->authorize('viewAny', auth()->user()); 此外,您正在尝试验证用户是否有权访问该页面。确保尝试访问该页面的人是用户,以便策略可以授权或不授权。 要在没有入门套件的情况下进行测试,请创建一个用户并使用它登录。 <?php namespace App\Http\Controllers; use Illuminate\Support\Facades\Auth; class UserController extends Controller { public function index() { $user = \App\Models\User::factory()->create(); Auth::login($user); $this->authorize('viewAny', auth()->user()); return response("Hello world"); } } 但是,如果您希望授予访客用户访问权限,您可以使用 ? 符号将 User 模型设为可选: public function viewAny(?User $user) { return true; }
我的此查询在不到 100 个日期内正常运行。 声明@startDate DATETIME 声明 @endDate DATETIME 将 @cols 声明为 NVARCHAR(max) 将 @query 声明为 NVARCHAR(max) 声明@startDa...
我看到了一个非常奇怪的行为,我创建了一个名为 ObservationsListView 的 ContentView 我看到了一个非常奇怪的行为,我创建了一个名为 ObservationsListView 的 ContentView <Grid x:Class="NedChatApp.Custom.ObservationsListView" xmlns="http://schemas.microsoft.com/dotnet/2021/maui" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:custom="clr-namespace:NedChatApp.Custom" xmlns:modelObs="clr-namespace:NedChatApp.Models.Observations" Padding="10" x:DataType="custom:ObservationsListView"> <Frame Style="{StaticResource CardView}"> <VerticalStackLayout Grid.Column="1" Padding="10" Spacing="10" VerticalOptions="Center"> <Label HorizontalOptions="Center" Style="{StaticResource MediumLabelBold}" Text="{Binding ClassName}" /> <CollectionView ItemsSource="{Binding Observations}" SelectionMode="None"> <CollectionView.ItemTemplate> <DataTemplate x:DataType="modelObs:ObservationStudentComplete"> <custom:ObservationView Icon="{Binding Icon}" IsNegative="{Binding IsNegative}" ObservationText="{Binding ObservationText}" /> </DataTemplate> </CollectionView.ItemTemplate> </CollectionView> </VerticalStackLayout> </Frame> </Grid> CS 是 public partial class ObservationsListView : Grid { public static readonly BindableProperty ClassNameTextProperty = BindableProperty.Create(nameof(ClassName) , typeof(string) , typeof(ObservationsListView) , null , propertyChanged: (bindable, value, newValue) => ((ObservationsListView)bindable).ClassName = (string)newValue); public string ClassName { get => (string)GetValue(ClassNameTextProperty); set => SetValue(ClassNameTextProperty, value); } public static readonly BindableProperty ObservationsProperty = BindableProperty.Create(nameof(Observations) , typeof(List<ObservationStudentComplete>) , typeof(ObservationsListView) , new List<ObservationStudentComplete>() , propertyChanged: (bindable, value, newValue) => ((ObservationsListView)bindable).Observations = (List<ObservationStudentComplete>)newValue); public List<ObservationStudentComplete> Observations { get => (List<ObservationStudentComplete>)GetValue(ObservationsProperty); set => SetValue(ObservationsProperty, value); } public ObservationsListView() { InitializeComponent(); } } 我在这样的页面中使用它 <CollectionView x:Name="ObservationsList" HeightRequest="{Binding ObservationsHeight}" ItemsSource="{Binding Observations}" SelectionMode="None"> <CollectionView.ItemTemplate> <DataTemplate x:DataType="modelObs:ClassObservationReactions"> <custom:ObservationsListView Observations="{Binding Observations}" /> </DataTemplate> </CollectionView.ItemTemplate> </CollectionView> 这是使用的模型,ClassObservationReactions public class ClassObservationReactions { public long ClaseId { get; set; } public string ClassName { get; set; } public DateTime Date { get; set; } public List<ObservationStudentComplete> Observations { get; set; } } 奇怪的是,即使控件中未设置 ClassName,它在运行应用程序时仍然显示正确的值,那么是否存在某种自动绑定? 如果我尝试像这样手动绑定值 <custom:ObservationsListView ClassName="{Binding ClassName}" Observations="{Binding Observations}" /> 我收到此错误 找不到“ClassName”的属性、BindableProperty 或事件,或者值和属性之间的类型不匹配。 在 .NET MAUI 中,CollectionView 和 ListView 等视图通过使用 ItemTemplate 支持数据绑定。您所说的“自动绑定”概念可能描述了 ItemTemplate 如何自动绑定到 ItemsSource 提供的集合中的每个项目。简单来说,当 ItemsSource 绑定到集合时,框架会自动将该集合中的每个项目绑定到 ItemTemplate 上,确保每个数据项都按照模板显示。 关于第二点,看起来您正在尝试在自定义 ClassName 中设置 ContentView 属性,但在相应的代码隐藏文件中,只有两个 BindableProperty 定义: ClassNameText 和 Observations。如果我理解正确,这可能是模型属性和视图属性之间的混淆。要解决此问题,您应该按如下方式修改绑定: <custom:ObservationsListView ClassNameText="{Binding ClassName}" Observations="{Binding Observations}" />
如何使用 blazor <InputDate /> 标签使用当地文化来格式化日期
我正在我的 Blazor 应用程序中使用该标签。但是我如何使用我自己的文化来格式化日期? 我正在我的 Blazor 应用程序中使用该标签。但是我如何使用我自己的文化来格式化日期? <InputDate class="form-control" @bind-Value="@ValidDate" @bind-Value:culture="nl-BE" @bind-Value:format="dd/MM/yyyy" /> 问候 迪特尔 答案是@bind-Value:format,就像这样 @page "/" <EditForm Model="@CurrentPerson"> <InputDate @bind-Value="@CurrentPerson.DateOfBirth" @bind-Value:format="dd/MM/yyyy"/> </EditForm> @code { Person CurrentPerson = new Person(); public class Person { public DateTime DateOfBirth { get; set; } = DateTime.Now; } } 还可以选择使用bind-Value:culture。 无法设置InputDate或<input type="date">的格式。这取决于浏览器设置。用户可以更改浏览器的语言。但您无法从 HTML 更改它。如果您确实需要自定义格式,则必须使用InputText或<input type="text">。我建议使用一些 javascript 库,例如 jQuery UI datepicker。 该解决方案对我不起作用。我是这样工作的: @代码{ 仅私人日期? _geboortedatum; private string GeboortedatumFormatted { get => _geboortedatum?.ToString("dd-MM-yyyy") ?? ""; set { if (DateOnly.TryParse(value, out var newDate)) { _geboortedatum = newDate; } } } } 地质学 _geboortedatum" class="text-danger" />
如何在 ngx-mat-datetime-picker 中自定义日期和时间格式?
我正在研究 Angular7 及其兼容的 ngx-mat-datetime-picker。它按预期工作。 想要自定义格式: 实际:月/日/年,时:分:秒 预期:yyyy-mm-dd hh:mm:ss 目前我不...
我正在尝试将 pandas 数据帧的一列从 datetime['ns'] 转换为 datetime['us']。 我尝试过使用 astype 但列类型似乎没有改变。我需要列本身的类型...
java中的Boolean.valueOf(String)和BooleanUtils.toBoolean(String)?
我有一个 Boolean.valueOf(String) 和 BooleanUtils.toBoolean(String) 之间不同的问题 。 我使用我的应用程序就像代码 BooleanUtils.toBoolean(defaultInfoRow.getFolderType()) 一样
Expo Development 客户端 Ios 构建问题?
不变违规:requireNativeComponent:在 UIManager 中找不到“RNDateTimePicker”。 此错误显示在 "react-native-modal-datetime-picker": "^17.0.0", ...
ML.net - CreateTimeSeriesEngine
我正在使用 ML.net 进行时间序列分析项目。在这里我尝试预测欧元兑美元的交易汇率。我从 CSV 文件加载数据并使用内存数据创建 IDataView。 列表 我正在使用 ML.net 进行时间序列分析项目。在这里我尝试预测欧元兑美元的交易汇率。我从 CSV 文件加载数据并使用内存数据创建 IDataView。 List<RateData> infoList = new List<RateData>(); // populate list infoList = FileParser(infoList); IDataView data = mlContext.Data.LoadFromEnumerable<RateData>(infoList); 我设法像这样运行预测估计器 var forecastEstimator = mlContext.Forecasting.ForecastBySsa( outputColumnName: nameof(RatePrediction.CurrentRate), inputColumnName: nameof(RateData.HistoricalRate), windowSize: 14, seriesLength: numRateDataPoints, trainSize: numRateDataPoints, horizon: 1, confidenceLevel: 0.95f ); SsaForecastingTransformer forecaster = forecastEstimator.Fit(RateDataSeries); 然后我尝试创建这样的预测引擎 var ForecastEngine = Forecaster.CreateTimeSeriesEngine(mlContext); 这里我遇到了一些错误。 我的输入和输出类如下: public class RateData { public DateTime TransactionDate { get; set; } public float HistoricalRate { get; set; } } public class RatePrediction { public float CurrentRate; } 我有这样的错误 System.InvalidOperationException: Can't bind the IDataView column 'CurrentRate' of type 'Vector<Single, 1>' to field or property 'CurrentRate' of type 'System.Single'. at Microsoft.ML.Data.TypedCursorable`1..ctor(IHostEnvironment env, IDataView data, Boolean ignoreMissingColumns, InternalSchemaDefinition schemaDefn) at Microsoft.ML.Data.TypedCursorable`1.Create(IHostEnvironment env, IDataView data, Boolean ignoreMissingColumns, SchemaDefinition schemaDefinition) at Microsoft.ML.Transforms.TimeSeries.TimeSeriesPredictionEngine`2.PredictionEngineCore(IHostEnvironment env, InputRow`1 inputRow, IRowToRowMapper mapper, Boolean ignoreMissingColumns, SchemaDefinition outputSchemaDefinition, Action& disposer, IRowReadableAs`1& outputRow) at Microsoft.ML.PredictionEngineBase`2..ctor(IHostEnvironment env, ITransformer transformer, Boolean ignoreMissingColumns, SchemaDefinition inputSchemaDefinition, SchemaDefinition outputSchemaDefinition, Boolean ownsTransformer) at Microsoft.ML.Transforms.TimeSeries.TimeSeriesPredictionEngine`2..ctor(IHostEnvironment env, ITransformer transformer, Boolean ignoreMissingColumns, SchemaDefinition inputSchemaDefinition, SchemaDefinition outputSchemaDefinition) at Microsoft.ML.Transforms.TimeSeries.PredictionFunctionExtensions.CreateTimeSeriesEngine[TSrc,TDst](ITransformer transformer, IHostEnvironment env, Boolean ignoreMissingColumns, SchemaDefinition inputSchemaDefinition, SchemaDefinition outputSchemaDefinition) at USD_EURO_Conversion_rate.TimeSeriesModelHelper.FitAndSaveModel(MLContext mlContext, IDataView RateDataSeries, String outputModelPath) 预测类中的属性需要是float[]类型;向量/数组而不是单个值,例如 public class RatePrediction { public float[] CurrentRate; } 类似于此处的Microsoft 示例。
SQL Server (T-SQL) 相当于 C# DateTime.Compare?
我想执行与以下 DateTime.Compare 相同的操作,但在 T-SQL 中: if (DateTime.Compare(DateTime.Now, (DateTime)myVar.Date) >= 0) { myVar.Priority += WeightedValue; } 我尝试创建...
为什么 DateTime.ParseExact 在解析字符串时会抛出异常?
此代码片段生成异常 字符串 t = @"11�3"; 字符串_fmt = @“MM\dd\yyyy”; DateTime l = DateTime.ParseExact(t, _fmt, CultureInfo.InvariantCulture); 例外...
为什么 DateTime.ParseExact 在解析这个文字字符串时会抛出异常?
此代码片段会生成异常: 字符串 t = @"11�3"; 字符串_fmt = @“MM\dd\yyyy”; DateTime l = DateTime.ParseExact(t, _fmt, CultureInfo.InvariantCulture); Exc...
我使用这样的模板文字类型: 输入 HelloSomething = `你好 ${string}` 常量字符串='世界' 函数 sayHello(string: string): HelloSomething { 返回“你好”+字符串 } (游乐场...
我有一个应用程序,可以在人们生病时进行登记,并在该事件发生后的一定工作日内向经理发送通知。 我可以使用 DateTime 的属性来跳过一周...
PowerShell 中的 [datetime]::ParseExact 问题
我正在尝试更新此处找到的脚本以使用 Office 365 导出的日历条目。 我更改了 DTSTART 和 DTEND 的变量(或者更确切地说我正在尝试),因为新的 ICS 文件显示...
Alamo Fire 和 Swift 无法将类型“[String : String]”的值转换为预期参数类型“HTTPHeaders?”
func requestWithRetries(tag:String, url:String, maxRetry:Int = 3,expectJSONArray:Bool,completion:@escaping jsonCompletion) { var headers = [String:String]() 让 params = [String:AnyObjec...
将NodaTime转换为Unix时间戳以及LocalDateTime的重要性
我目前正在使用 NodaTime,因为我在 C# 的 DateTime 类中处理时区时遇到了挫折。到目前为止,我真的很高兴。 公共静态字符串 nodaTimeTest(字符串输入) { var 默认Va...
对于 (int x=0; x for (int x=0; x<listaEquipes.length; x++) { await _loadEquipe(listaEquipes[x].id.toString()); TabelaListaEquipes _reg = TabelaListaEquipes(); _reg.equipeId = listaEquipes[x].id.toString(); _reg.equipe = listaAtletaEquipe; //print (_reg.equipe![0].nome.toString()); listaEquipesGeral.add(_reg); } 此型号: class TabelaListaEquipes { String? equipeId; List<TabelaInscricoes>? equipe; TabelaListaEquipes( { this.equipeId, this.equipe}); } 现在我看到最后一个reg保存在列表的所有iten中,为什么? 这就对了: listaEquipesGeral[0].equipe == listEquipesGeral[1].equipe ...仍然添加了最后一项。为什么?? _loadEquipe 函数,它也有效,我已经测试过了, List<TabelaInscricoes> listaAtletaEquipe = []; Future<void> _loadEquipe(equipId) async { setState(() { listaAtletaEquipe.clear(); carregandoEquipe = true; }); TabelaInscricoes _result = TabelaInscricoes(); CollectionReference _dbCollection = FirebaseFirestore.instance.collection('campeonatos').doc(resultSelect.campId).collection('divisoes').doc(resultSelect.divId).collection('equipes').doc(equipId).collection('atletas'); await _dbCollection.orderBy('pos2', descending: false).get().then((QuerySnapshot querySnapshot) async { if (querySnapshot.docs.isNotEmpty) { querySnapshot.docs.forEach((element) async { _result = TabelaInscricoes.fromJson(element.data()! as Map<String, dynamic>); if (_result.campId == resultSelect.campId && _result.divId == resultSelect.divId) { _result.id = element.id; _result.filePath = ""; setState(() { listaAtletaEquipe.add(_result); }); } }); for (int x = 0; x<listaAtletaEquipe.length; x++) { for (int y = 0; y<listaAtletas.length; y++) { if (listaAtletaEquipe[x].atletaId.toString() == listaAtletas[y].id.toString()) { setState(() { listaAtletaEquipe[x].nome = listaAtletas[y].nome; listaAtletaEquipe[x].fotoNome = listaAtletas[y].fotoNome; listaAtletaEquipe[x].filePath = listaAtletas[y].filePath; listaAtletaEquipe[x].dataN = listaAtletas[y].dataN; listaAtletaEquipe[x].fone1 = listaAtletas[y].fone1; listaAtletaEquipe[x].fone2 = listaAtletas[y].fone2; listaAtletaEquipe[x].nTitulo = listaAtletas[y].nTitulo; listaAtletaEquipe[x].info = listaAtletas[y].info; listaAtletaEquipe[x].email = listaAtletas[y].email; }); } } } for (int x=0; x<listaAtletaEquipe.length; x++) { if (listaAtletaEquipe[x].fotoNome.toString().isNotEmpty) { await MyStorage.getUrl(context, "atletas/${listaAtletaEquipe[x].fotoNome.toString()}").then((value) { setState(() { listaAtletaEquipe[x].filePath = value; }); }); } } setState(() { carregandoEquipe = false; }); }else { setState(() { carregandoEquipe = false; }); } }); } AtletaEquipes 型号操作系统列表: class TabelaInscricoes{ bool? carregando = true; String? id; String? campId; String? divId; String? atletaId; String? nome_responsavel; String ?posicao; String? filePath; Uint8List? imageFile; String? usuario; String? nInscricao; String? nome; String? dataN; String? nTitulo; String? fone1; String? fone2; String? info; String? email; String? fotoNome; String? pos2; String? selected; TabelaInscricoes({ this.carregando, this.nome, this.dataN, this.nTitulo, this.fone1, this.fone2, this.info, this.email, this.id, this.campId, this.divId, this.posicao, this.nome_responsavel, this.nInscricao, this.atletaId, this.selected, this.pos2, this.fotoNome, this.filePath, this.imageFile, this.usuario}); Map<String, dynamic> toJson() => { 'campId': campId, 'divId': divId, 'atletaId': atletaId, 'nome_responsavel': nome_responsavel, 'posicao': posicao, 'usuario': usuario, 'nInscricao': nInscricao, 'pos2': pos2, 'selected': selected }; TabelaInscricoes.fromJson(Map<String, dynamic> json) : campId = json['campId'], divId = json['divId'], atletaId = json['atletaId'], nome_responsavel = json['nome_responsavel'], posicao = json['posicao'], nInscricao = json['nInscricao'], pos2 = json['pos2'], selected = json['selected'], usuario = json['usuario']; } 这里发生了什么,listaEquipesGeral 总是保存最后添加的所有项目。 我明白了,解决方案是在模型内的列表中逐项添加: for (int x=0; x<listaEquipes.length; x++) { await _loadEquipe(listaEquipes[x].id.toString()); TabelaListaEquipes _reg = TabelaListaEquipes(); _reg.equipeId = listaEquipes[x].id.toString(); _reg.equipe = []; //here above the solution, include for to put item by item, and it works for (int y = 0; y<listaAtletaEquipe.length; y++) { _reg.equipe!.add(listaAtletaEquipe[y]); } //print (_reg.equipe![0].nome.toString()); listaEquipesGeral.add(_reg); }
class SmartDevice(val 名称: String, val 类别: String) { var deviceStatus = "在线" 构造函数(名称:字符串,类别:字符串,状态代码:Int):this(名称,类别){ ...
在使用 TypeScript 进行 React 时,输入字段在“值”处给出错误
从“react”导入{SetStateAction,useState} const 登录表单 =() =>{ const [名称,setName] = useState(); const [全名,setFullname] = useState import { SetStateAction, useState } from "react" const Loginform =() =>{ const [name, setName] = useState<String | null>(); const [fullname, setFullname] = useState<String | null>(); const inputEvent =(event: { target: { value: SetStateAction< String |null | undefined >; }; })=>{ setName(event.target.value) } const Submit = ()=>{ setFullname(name) } return <> <h1>Enter Your Name </h1> <input type="text" placeholder="Enter your name" onChange={inputEvent} value={name}/> <button onClick={Submit}>Submit</button> <h1>Hi {fullname==null? "Guest" :fullname}</h1> </> } export default Loginform <input type="text" placeholder="Enter your name" onChange={inputEvent} value={name}/> 上一行中的“value”属性显示错误 这是错误详细信息: (property) React.InputHTMLAttributes<HTMLInputElement>.value?: string | number | readonly string[] | undefined Type 'String | null | undefined' is not assignable to type 'string | number | readonly string[] | undefined'. Type 'null' is not assignable to type 'string | number | readonly string[] | undefined'.ts(2322) index.d.ts(2398, 9): The expected type comes from property 'value' which is declared here on type 'DetailedHTMLProps<InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>' 也尝试写 return as any。或者尝试添加 string[],但出现错误。 进行以下调整: 将 String 替换为 string,因为原始 Typescript 类型是小写的 (number, string, boolean, etc) TypeScript 报告此错误,因为属性值不接受 null 作为值,而是接受 undefined。将代码更新为: const [name, setName] = useState<string>() 这会使用 string 作为默认类型来初始化状态。 初始状态隐式地被视为 undefined,因为如果未显式提供,TypeScript 会将类型的默认值设置为 undefined。 为了简单起见,您不需要解构事件。使用内联函数,如下例所示: <input type="text" placeholder="Enter your name" onChange={(e) => setName(e.target.value)} value={name}/> 我使用你的代码创建了一个 CodeSanbox,它似乎只需要很少的修改就可以正常工作。 您可以在这里找到沙盒 这是我想出的代码 import { SetStateAction, useState } from "react"; const Loginform = () => { const [name, setName] = useState<string | null>(); const [fullname, setFullname] = useState<string | null>(); const inputEvent = (event: { target: { value: SetStateAction<string | null | undefined> }; }) => { setName(event.target.value); }; const Submit = () => { setFullname(name); }; return ( <div> <h1>Enter Your Name </h1> <input type="text" placeholder="Enter your name" onChange={inputEvent} value={name} /> <button onClick={Submit}>Submit</button> <h1>Hi {fullname == null ? "Guest" : fullname}</h1> </div> ); }; export default Loginform;
此代码会产生语法错误。我无法在 @kwdef 结构中使用默认值? @kwdef 结构 MyStruct indir::String = "./", outdir::String = "./结果", 阈值...
如何生成带有货币符号(例如 $)而不是货币代码(USD、EUR)的价格字符串?
这是我当前的代码: fun getMonthlyPriceString(yearlyPriceMicros: Long,currencyCode: String): String { val 格式:NumberFormat = NumberFormat.getCurrencyInstance() 格式。
为什么构造 std::string(0) 不会发出编译器警告?
假设我有这段代码。 #包括 int main() { std::字符串(0); 返回0; } 写入 std::string(0) 会导致 std::basic_string::basic_string(const char*)...
要返回模板文字类型,需要返回一个模板文字: 输入 HelloSomething = `你好 ${string}` const str = '世界' 函数 sayHello(str: string): HelloSomething { 返回`...
Python 中的 AWS Lambda 函数,生成字符串流
所以我想利用这个.net代码,我在卡盘中接收响应并单独处理每个块 公共异步任务 InvokeLambdaFunctionAsync(string functionName, string pay...
我正在尝试按 SUBJID DATE 对数据进行排序,并对所有其他变量(如果它们具有相同的值)进行分组。但正如我所看到的,值在 DATETIME 组内进行排序,并且其他变量仅在...中进行分组...
无法将 Generic<string> 转换为 Generic<TArg>,即使我在检查 Generic<string> 是否可分配给 Generic<TArg>
和标题差不多。我有这个代码: if (typeof(Option).IsAssignableTo(typeof(Option))) { 返回新结果(无(),(选项)结果.GetErr(...
String sAux=getResources().getString(R.string.ShareText); sAux+=” ”; sAux+="https://play.google.com/store/apps/details?id="; sAux+=getPackageName(); sAux+=” ”; ...
我有以下方法: 公共列表 getZipFileList(String fullPath) 抛出 IOException { logger.debug("====> ZipService: getZipFileList <====");
我尝试在 std::string 中有选择地获取当地时间/UTC。 我尝试过的: (1) 获取 UTC 的 std::string 使用 std::format 可以正常工作: 自动 utc = std::chrono::system_clock::now(); std::字符串...
如何在 Groovy 中声明字符串数组?我正在尝试如下但它抛出一个错误 def String[] osList = new String[] 行中没有数组构造函数调用的表达式: 我在做什么...
通过更少的 Java API 调用来映射 Google 云端硬盘内容的有效方法
大家好,我有一个代码,用于列出共享驱动器中存在的文件(以便稍后下载并创建相同的文件夹路径) 目前我做这样的事情: 哈希映射 大家好,我有一个代码,用于列出共享驱动器中存在的文件(以便稍后下载并创建相同的文件夹路径) 目前我正在做这样的事情: HashMap<String, Strin> foldersPathToID = new HashMap<>(); //searching all folders first saving their IDs searchAllFoldersRecursive(folderName.trim(), driveId, foldersPathToID); //then listing files in all folders HashMap<String, List<File>> pathFile = new HashMap<>(); for (Entry<String, String> pathFolder : foldersPathToID.entrySet()) { List<File> result = search(Type.FILE, pathFolder.getValue()); if (result.size() > 0) { String targetPathFolder = pathFolder.getKey().trim(); pathFile.putIfAbsent(targetPathFolder, new ArrayList<>()); for (File file : result) { pathFile.get(targetPathFolder).add(file); } } } 递归方法在哪里: private static void searchAllFoldersRecursive(String nameFold, String id, HashMap<String, String> map) throws IOException, RefreshTokenException { map.putIfAbsent(nameFold, id); List<File> result; result = search(Type.FOLDER, id); // dig deeper if (result.size() > 0) { for (File folder : result) { searchAllFoldersRecursive(nameFold + java.io.File.separator + normalizeName(folder.getName()), folder.getId(), map); } } } 搜索功能是: private static List<com.google.api.services.drive.model.File> search(Type type, String folderId) throws IOException, RefreshTokenException { String nextPageToken = "go"; List<File> driveFolders = new ArrayList<>(); com.google.api.services.drive.Drive.Files.List request = service.files() .list() .setQ("'" + folderId + "' in parents and mimeType" + (type == Type.FOLDER ? "=" : "!=") + "'application/vnd.google-apps.folder' and trashed = false") .setPageSize(100).setFields("nextPageToken, files(id, name)"); while (nextPageToken != null && nextPageToken.length() > 0) { try { FileList result = request.execute(); driveFolders.addAll(result.getFiles()); nextPageToken = result.getNextPageToken(); request.setPageToken(nextPageToken); return driveFolders; } catch (TokenResponseException tokenError) { if (tokenError.getDetails().getError().equalsIgnoreCase("invalid_grant")) { log.err("Token no more valid removing it Please retry"); java.io.File cred = new java.io.File("./tokens/StoredCredential"); if (cred.exists()) { cred.delete(); } throw new RefreshTokenException("Creds invalid will retry re allow for the token"); } log.err("Error while geting response with token for folder id : " + folderId, tokenError); nextPageToken = null; } catch (Exception e) { log.err("Error while reading folder id : " + folderId, e); nextPageToken = null; } } return new ArrayList<>(); } 我确信有一种方法可以通过很少的 api 调用(甚至可能是一个调用?)对每个文件(使用文件夹树路径)进行正确的映射,因为在我的版本中,我花了很多时间进行调用 service.files().list().setQ("'" + folderId+ "' in parents and mimeType" + (type == Type.FOLDER ? "=" : "!=") + "'application/vnd.google-apps.folder' and trashed = false").setPageSize(100).setFields("nextPageToken, files(id, name)"); 每个子文件夹至少一次......并且递归搜索所有内容需要很长时间。最后,映射比下载本身花费的时间更多...... 我搜索了文档,也在此处搜索,但没有找到任何内容来列出具有一个库的所有驱动器调用任何想法? 我想使用专用的 java API 来获取共享 GoogleDrive 中的所有文件及其相对路径,但调用次数尽可能少。 提前感谢您的时间和答复 我建议您使用高效的数据结构和逻辑来构建文件夹树并将文件映射到其路径,如下所示 private static void mapDriveContent(String driveId) throws IOException { // HashMap to store folder ID to path mapping HashMap<String, String> idToPath = new HashMap<>(); // HashMap to store files based on their paths HashMap<String, List<File>> pathToFile = new HashMap<>(); // Fetch all files and folders in the drive List<File> allFiles = fetchAllFiles(driveId); // Build folder path mapping and organize files for (File file : allFiles) { String parentId = (file.getParents() != null && !file.getParents().isEmpty()) ? file.getParents().get(0) : null; String path = buildPath(file, parentId, idToPath); if (file.getMimeType().equals("application/vnd.google-apps.folder")) { idToPath.put(file.getId(), path); } else { pathToFile.computeIfAbsent(path, k -> new ArrayList<>()).add(file); } } // Now, pathToFile contains the mapping of paths to files // Your logic to handle these files goes here } private static List<File> fetchAllFiles(String driveId) throws IOException { // Implement fetching all files and folders here // Make sure to handle pagination if necessary // ... } private static String buildPath(File file, String parentId, HashMap<String, String> idToPath) { // Build the file path based on its parent ID and the idToPath mapping // ... }
在处理必须与 C 代码互操作的代码时,我经常遇到这个问题,其中有一个 std::string ,您需要将其内容复制到普通的 char 缓冲区,如下所示: 结构体T {...
我有一个如下所示的对象: 类型示例 = { 道具:字符串 } 常量示例 = { a: { 属性: "a" }, b: { 属性: "b" }, c: { 属性: "c" }, } 示例。 我有一个如下所示的对象: type Example = { prop: string } const example = { a: { prop: "a" }, b: { prop: "b" }, c: { prop: "c" }, } example.<hinting; a, b, c> 当我将对象输入为记录时,我丢失了类型提示,因为 string 太宽了: const example: Record<string, Example> = { a: { prop: "a" }, b: { prop: "b" }, c: { prop: "c" }, } example.<no hinting> 如何在不使用单独的类型和辅助函数的情况下将键类型限制为该对象中定义的属性来代替 Record<string, Example>? 如果我理解正确,你可以这样做: const example = { a: { prop: "a" }, b: { prop: "b" }, c: { prop: "c" }, } as const satisfies Record<string, Example> 可以省略 "as const"。
我有这个自定义控件。 公共类面板:ContentView { 公共静态只读 BindableProperty CaptionProperty = BindableProperty.CreateAttached(nameof(Caption), typeof(string),
我在Java中有以下方法: 公共列表getList(字符串str,类clazz){ List lst = new ArrayList<>(); String[] arr = str.split(",&quo...
我很难区分网络图像和文件图像。 putImage(图像){ if(image.runtimeType == String){ // if(image.contains('http')){ imageInProfile = NetworkIm...
我有这个 YAML 文件 src/main/resources/foo.yml: 酒吧: - 你好 - 世界 巴兹: - 洛雷姆 - ipsum 这个组件: @成分 公共类我的组件{ 公共我的组件(地图 我有这个 YAML 文件 src/main/resources/foo.yml: bar: - hello - world baz: - lorem - ipsum 这个组件: @Component public class MyComponent { public MyComponent(Map<String, List<String>> foo) { // foo.get("bar") } } 使用 Spring Boot 2.7,是否可以将配置按原样(自己的文件,无前缀,无类)注入到构造函数中? 你可以这样做 @Configuration public class MyConfiguration { @Bean public Map<String, Object> foo(@Value("classpath:foo.yaml") Resource yaml) { Yaml yaml = new Yaml(); return yaml.load(yaml.getInputStream()); } } @Component public class MyComponent { public MyComponent(@Qualifier("foo") Map<String, Object> foo) { ... } }
“string”类型的参数不可分配给 prisma.service 上“never”类型的参数
从“@nestjs/common”导入{ INestApplication, Injectable, OnModuleInit }; 从“@prisma/client”导入 { PrismaClient }; @Injectable() 导出类 PrismaService 扩展
如何将yield return与microsoft graph api v5 PageIterator一起使用
目前我正在使用 AsyncEnumerable 从 Graph API 获取组成员 公共异步 IAsyncEnumerable LoadGroupMembers(string GroupId) { if (graphClient == null) th...
为什么 Odoo 17 没有在 <notebook> 中为我的字段渲染标签?
我正在运行有关 Odoo 17 开发的教程,并为第 7 章中的练习创建了以下代码: 我正在运行有关 Odoo 17 开发的教程,并且我为第 7 章中的练习创建了此代码: <record id="estate_view_form" model="ir.ui.view"> <field name="name">estate.property.form</field> <field name="model">estate.property</field> <field name="arch" type="xml"> <form string="Estate Property" create="True"> <sheet> <group string="Info"> <field name="name" /> <field name="description" /> </group> <group string="Location"> <field name="postcode" /> </group> <notebook> <page string="Specs"> <field name="facades" /> <field name="garage" /> </page> </notebook> </sheet> </form> </field> </record> 它可以工作,但 <notebook> 中字段的标签未呈现。我尝试添加 string 属性,但这不起作用。 <notebook> 上的 文档没有提及任何有关此行为的信息。 IIRC 自从我使用的每个版本(6.1+)以来,你必须在 group 周围有一个 field 才能自动获取标签。
我正在尝试定义一个Map来映射多个JPA存储库。这是我的代码 @服务 @AllArgsConstructor 公共类 MyDataTablesService { 私人决赛
将_map<string,dynmic>转换为flutter中的模态
我有以下记录来自API { 成功:真实 状态:200, 令牌:“...”, 消息:“您已登录” 用户:{id:1,名字:“..”,名字:“....
将_map<string,dynmic>转换为flutter中的模型
我有以下记录来自API { 成功:真实 状态:200, 令牌:“...”, 消息:“您已登录” 用户:{id:1,名字:“..”,名字:“....
如何为类似端点命名 REST 资源(findById / findByEmail)?
我有 2 个端点,如下所示,但我不能像这样使用端点 url: @GetMapping("/{email}") 公共 ResponseEntity findByEmail(@PathVariable String email) { } @
我有下一个存储库: 接口 UserRepository 扩展 MongoRepository { 可选 findById(@Param("id") String id); } 当我尝试使用方法 fin 时...
这是我的 df: df <- data.frame(a = as.character(c("AB+CD+EF", "GH+IJ+KL")), x = c(1,2) ) df a x 1 AB+CD+EF 1 2 GH+IJ+KL 2 When I replace the string "+" by &
我想将 Map<> 的流转换为字符串,并将其附加到文本区域。我尝试了一些方法,最后一个使用 StringBuilder,但它们不起作用。 公开 我想将 Map<> 的流转换为字符串,并将其附加到文本区域。我尝试了一些方法,最后一个使用 StringBuilder,但它们不起作用。 public <K, V extends Comparable<? super V>> String sortByAscendentValue(Map<K, V> map, int maxSize) { StringBuilder sBuilder = new StringBuilder(); Stream<Map.Entry<K,V>> sorted = map.entrySet().stream() .sorted(Collections.reverseOrder(Map.Entry.comparingByValue())); BufferedReader br = new BufferedReader(new InputStreamReader((InputStream) sorted)); String read; try { while ((read=br.readLine()) != null) { //System.out.println(read); sBuilder.append(read); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } sorted.limit(maxSize).forEach(System.out::println); return sBuilder.toString(); } 您可以将条目收集到一个String中,如下所示: String sorted = map.entrySet().stream() .sorted(Collections.reverseOrder(Map.Entry.comparingByValue())) .map(e-> e.getKey().toString() + "=" + e.getValue().toString()) .collect(Collectors.joining (",")); 考虑对 @Eran 的代码进行轻微更改,因为 HashMap.Entry.toString() 已经通过 = 为您加入了: String sorted = map.entrySet().stream() .sorted(Collections.reverseOrder(Map.Entry.comparingByValue())) .map(Objects::toString) .collect(Collectors.joining(",")); 这很容易做到,您可以使用 Steams API 来做到这一点。首先,将映射中的每个条目映射到单个字符串 - 键和值的连接字符串。一旦你有了这个,你就可以简单地使用 reduce() 方法或 collect() 方法来做到这一点。 使用“reduce()”方法的代码片段将如下所示: Map<String, String> map = new HashMap<>(); map.put("sam1", "sam1"); map.put("sam2", "sam2"); String concatString = map.entrySet() .stream() .map(element-> element.getKey().toString() + " : " + element.getValue().toString()) .reduce("", (str1,str2) -> str1 + " , " + str2).substring(3); System.out.println(concatString); 这将为您提供以下输出: sam2 : sam2 , sam1 : sam1 您还可以使用 collect()' method instead ofreduce()` 方法。它看起来像这样: String concatString = map.entrySet() .stream() .map(element-> element.getKey().toString() + " : " + element.getValue().toString()) .collect(Collectors.reducing("", (str1,str2) -> str1 + " , " + str2)).substring(3); 两种方法给出相同的输出。