Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法在属性文件中显示验证错误消息_Java_Spring_Spring Mvc - Fatal编程技术网

Java 无法在属性文件中显示验证错误消息

Java 无法在属性文件中显示验证错误消息,java,spring,spring-mvc,Java,Spring,Spring Mvc,我正在尝试在属性文件中定义验证错误消息。 但是我得到了Bean验证的默认消息。 该项目的构建工具是gradle,属性文件位于src/main/resources目录的根目录中 我试过的 确保我的区域设置为“ja” 将“NotBlank=”更改为“NotBlank.javax.validation.constraints=” 控制台记录字段错误消息 属性文件的源代码和内容 java实现WebMVCConfiguer application-messages_-ja.properties的一部分

我正在尝试在属性文件中定义验证错误消息。
但是我得到了Bean验证的默认消息。
该项目的构建工具是gradle,属性文件位于src/main/resources目录的根目录中

我试过的
  • 确保我的区域设置为“ja”
  • 将“NotBlank=”更改为“NotBlank.javax.validation.constraints=”
控制台记录字段错误消息 属性文件的源代码和内容 java实现WebMVCConfiguer application-messages_-ja.properties的一部分 如何在前端显示验证错误消息 如果存在验证错误,控制器将BindingResult对象传递到此方法

public String getErrMsg(BindingResult bindingResult) {
    StringBuilder alertMsg = new StringBuilder("<p>入力エラー</p>");
    alertMsg.append("<ul>\n");
    for (int i = 0; i < bindingResult.getErrorCount(); i++) {
      alertMsg.append("<li>" + bindingResult.getAllErrors().get(i).getDefaultMessage() + "</li>\n");
      if (i == bindingResult.getErrorCount() - 1) {
        alertMsg.append("</ul>");
      }
    }
    return alertMsg.toString();
  }
公共字符串getErrMsg(BindingResult BindingResult){
StringBuilder alertMsg=新的StringBuilder(“入力エラー

”; alertMsg.append(“
    \n”); 对于(int i=0;i”+bindingResult.getAllErrors().get(i).getDefaultMessage()+”\n”); 如果(i==bindingResult.getErrorCount()-1){ alertMsg.append(“
”); } } 返回alertMsg.toString(); }
控制器将返回值传递给Thymeleaf模板。 模板包含此HTML

<span th:utext="${alertMsg}"></span>

感谢M.Deinum的评论,我成功地显示了预期的错误消息! 我更改了显示错误消息的方法。我改变了Thymeleaf模板如下

<ul class="errMsg" th:if="${#fields.hasErrors('*')}">
  <li th:each="err : ${#fields.errors('*')}" th:text="${err}">Input is incorrect</li>
</ul>
    输入不正确

感谢M.Deinum的评论,我成功地显示了预期的错误消息! 我更改了显示错误消息的方法。我改变了Thymeleaf模板如下

<ul class="errMsg" th:if="${#fields.hasErrors('*')}">
  <li th:each="err : ${#fields.errors('*')}" th:text="${err}">Input is incorrect</li>
</ul>
    输入不正确

您是如何执行测试的?我认为问题可能出在
MessageSource
创建中。我建议通过调用该方法,手动检查它在创建之后是否正常工作来验证它。如果你知道问题就在那里,你可以把精力集中在那里。此外,对于区域设置代码,请尝试
ja_JP
而不仅仅是
ja
。此外,我认为
classpath
中的资源将被永久缓存,因此
messageSource.setCacheSeconds(5)
将不受尊重。@hellen0328:关于缓存,我只是说无论您设置什么,它都可能被忽略。这相当于将其设置为
-1
。此外,您的文件名有一个输入错误,消息中有3个s。起初我认为这是问题中的一个输入错误,但请检查一下。您尝试/配置的东西太多了。删除验证器(默认配置并附加到
MessageSource
),同时删除默认配置的
RequestMappingHandlerMapping
。确保您的配置中也有
@EnableWebMvc
(是否可以添加完整的
WebMvcConfig
?)。问题在于您自己的代码。你不应该那样做。带有表单的Thymeleaf具有呈现消息的方法。你绕过了所有这些。你是如何进行测试的?我认为问题可能出在
MessageSource
创建中。我建议通过调用该方法,手动检查它在创建之后是否正常工作来验证它。如果你知道问题就在那里,你可以把精力集中在那里。此外,对于区域设置代码,请尝试
ja_JP
而不仅仅是
ja
。此外,我认为
classpath
中的资源将被永久缓存,因此
messageSource.setCacheSeconds(5)
将不受尊重。@hellen0328:关于缓存,我只是说无论您设置什么,它都可能被忽略。这相当于将其设置为
-1
。此外,您的文件名有一个输入错误,消息中有3个s。起初我认为这是问题中的一个输入错误,但请检查一下。您尝试/配置的东西太多了。删除验证器(默认配置并附加到
MessageSource
),同时删除默认配置的
RequestMappingHandlerMapping
。确保您的配置中也有
@EnableWebMvc
(是否可以添加完整的
WebMvcConfig
?)。问题在于您自己的代码。你不应该那样做。带有表单的Thymeleaf具有呈现消息的方法。你绕过了这一切。
<span th:utext="${alertMsg}"></span>
<ul class="errMsg" th:if="${#fields.hasErrors('*')}">
  <li th:each="err : ${#fields.errors('*')}" th:text="${err}">Input is incorrect</li>
</ul>