1

我正在尝试使用th:pattern日期输入表单字段,例如使用spring-mvc的百里香模板,但没有运气。还有其他人经历过类似的事情并有一些见解或替代方案吗?

我试过 1。硬编码模式

<input type="text" th:pattern="MM/dd/yyyy" th:field="*{classDate}"/>

收到错误:

Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateProcessingException: Could not parse as expression: "MM/dd/yyyy" 

和 2。在 java 代码中设置模式以供模板使用

<input type="date" th:pattern="${classdate_format}" th:field="*{classDate}"/>

收到错误:

Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateProcessingException: Error during execution of processor 'org.thymeleaf.spring3.processor.attr.SpringInputGeneralFieldAttrProcessor'
4

1 回答 1

2

pattern是标签的html5属性。input

pattern使用regex验证input值。因此,您插入属性的值应该是正确的正则表达式模式。pattern

如果您使用Thymeleafth:前缀,模板处理器会尝试在Spiring的模型中找到合适的变量并将其作为属性值插入。Thymeleaf 使用Spring EL作为它的模板。

所以你的第一种方法是不正确的,因为使用了无效的 SpringEL 表达式。

第二种解决方案看起来更好,type="date"可以为您提供您想要的,但不适用于所有浏览器${classdate_format}看起来像正确的表达。要了解导致第二个错误的原因,需要更多代码。

无论如何,有什么理由为属性使用th:前缀?pattern仅当您想在服务器端动态创建正则表达式模式时才需要它。但在这种情况下,正则表达式模式非常简单,因此您可以使用不带th:. 要为您的案例编写正确的正则表达式,请参阅此答案

于 2013-06-15T21:30:35.863 回答