无法使用spring-mvc使用大小注释从属性文件中打印消息

时间:2015-07-04 18:22:38

标签: java spring spring-mvc

我是Spring MVC的新手。我有一个带有以下注释的Student

@Size(min=2, max=10 )
public String studentHobby;

StudentController类:

@RequestMapping("admissionSuccess.html")
public ModelAndView admissionSuccess(@Valid @ModelAttribute("student") Student student,BindingResult result)
{

    if(result.hasErrors())
    {
        ModelAndView model=new ModelAndView("admissionForm");
        return model;
    }
    ModelAndView model=new ModelAndView("admissionSuccess");
    model.addObject("student",student);
    return model;
}

studentmessages.properties

Size.student.studentHobby=please enter a value for studenthobby  between 2 and 10;

spring-servlet.xml文件:

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <property name="basename" value="/WEB-INF/studentmessages/"></property>
</bean>

我无法从属性文件中打印消息,我收到了默认消息。请告诉我代码是否有问题。

2 个答案:

答案 0 :(得分:0)

您需要向注释message添加属性@Size

@Size(min=2, max=10, message = 'Size.student.studentHobby' )

如果您没有定义此属性,系统会自动生成一条消息:

"size must be between 2 and 10"

你也需要:

  1. WEB-INF/i18n/messages bean中的属性文件定义正确的路径messageSource;

  2. 在配置文件中配置LocalValidatorFactoryBean;

  3. 在控制器中注入声明的验证器并使用它。

  4. 如图所示here

答案 1 :(得分:0)

您的目录结构如何?看起来您设置了yout ReloadableResourceBundle的基本名称以匹配您的属性文件名。而不是它必须匹配您放置消息文件的文件夹。并将studentmessages.properties重命名为ValidationMessages.properties(验证消息的默认资源包)。

像这样:

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="/WEB-INF/messages/"></property>
</bean>

并将其添加到您的配置xml:

<bean id=”validator” class=”org.springframework.validation.beanvalidation.LocalValidatorFactoryBean” >
    <property name=”validationMessageSource” ref=”messageSource”/>
</bean>

目录结构:

...
   |_ WEB-INF
         |_ messages
               |_ ValidationMessages.properties

您应该在模型的属性中指定哪些消息应该用于验证(如Igor Patsyan所说)。像这样:

@Size(min=2, max=10, message="Size.student.studentHobby")
public String studentHobby;

参考:http://www.silverbaytech.com/2013/04/16/custom-messages-in-spring-validation/