我在将th: field
的值解析为类Duration
的变量时遇到问题。我想发生的是输入一些数字,我想保存为分钟。
这来自我的HTML文件:
<input type="text" th:field="*{duration}">
在我的对象方面,我只是初始化了变量,如下所示:
@Column(nullable = false)
private Duration duration;
我得到一个错误网页:
对象“bookingType”的验证失败。错误计数:1个组织。springframework。验证。BindException:组织。springframework。验证。BeanPropertyBindingResult:1 errors字段错误,在字段“duration”上的对象“bookingType”中:拒绝值[15];代码[typeMismatch.bookingType.duration,typeMismatch.duration,typeMismatch.java.time.duration,typeMismatch];参数[org.springframework.context.support.DefaultMessageSourceResolvable:代码[bookingType.duration,duration];参数[];默认消息[持续时间]];默认消息[未能将类型为“java.lang.String”的属性值转换为属性“Duration”的必需类型“java.time.Duration”;嵌套异常为org.springframework.core.convert.ConversionFailedException:未能将类型[java.lang.String]转换为值为“15”的类型[@javax.persistence.Column java.time.Duration];嵌套的异常是java。lang.IllegalArgumentException:对值[15]]的解析尝试失败
我正在使用Bootstrap作为前端,如果它确实重要的话。
我添加了Thymeleaf的java8time额外
,尝试将输入类型更改为时间和数字,但我仍然得到相同的错误。
我通常建议在您的模型和web界面之间创建DTO,这样您可以更自由地移动。
您可以在错误和注释中看到,问题很明显,字符串输入15不是持续时间,无法转换。
如果您的持续时间值是特定类型(分钟、小时..),您可以添加如下自定义转换器:
public class StringToDurationConverter
implements Converter<String, Duration> {
@Override
public Duration convert(String from) {
return Duration.ofMinutes(
Long.valueOf(from));
}
}
我们还需要通过将StringToDurationConverter
添加到Formatter注册表
来告诉Spring
有关这个新转换器的信息。这可以通过实现WebMvcConfigrer
并覆盖addFor事项()
方法来完成:
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addFormatters(FormatterRegistry registry) {
registry.addConverter(new StringToDurationConverter());
}
}
我们使用的默认Spring转换器将在每个匹配的源-目标对上应用转换。
如果你想看到有条件的东西:https://stackoverflow.com/a/57539880/2039546
我有一个字符串时间格式。我没有找到任何格式来解析这个字符串值。有没有办法将这个字符串值转换为Gotime.Time? 编辑 - 这不是重复的问题。我知道如何解析,但我不知道我们可以使用时间格式包中列出的任何布局。这个答案清除了我的涂鸦。
我在Thymeleaf中有一个表单输入字段。字段(下面代码段中的BookingEntry.DateFrom)是类型日期。我使用datepicker来允许用户选择并格式化所需的日期以输入字段。这都没问题。 我确信我可以使用一个以我选择的任何格式初始化的字符串,而不是一个日期类型,但是我想知道是否有一种方法来格式化th:字段中的初始值? 多谢
这是正确的吗?
当我点击前端的一个链接(< code>brandname)时,我需要使用百里叶中的< code>th:href向服务器发送一个请求。为此,我遵循以下代码 和< code>brandname值动态地来自它们各自的< code >对象,但是对于上面的请求,我需要附加额外的内容,为此我尝试了下面的方法
如何将字符串日期格式转换为日期,我有格式为以下格式的日期字符串: 接下来,我尝试了,但没有运气。 所有上述语句都存在解析错误。
问题内容: 如何将下面的日期字符串解析为一个Date对象? 引发异常… 问题答案: 模式是错误的。您有3个字母的天的缩写,因此必须为。您有3个字母的月份缩写,因此必须为。由于这些日和月的缩写对语言环境敏感,因此您也希望将语言环境明确指定为英语,否则它将使用平台默认语言环境,而语言环境本身可能不是英语。 这在这里打印 根据我的时区是正确的。 如果您不想使用代替,我也会重新考虑。阅读javadoc以获