有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java无法使用springmvc使用大小注释打印属性文件中的消息

我对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;
}

和{}:

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) 个答案

  1. # 1 楼答案

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

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

    如果未定义此属性,将自动生成一条消息:

    "size must be between 2 and 10"
    

    你还需要:

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

    2. 在配置文件中配置LocalValidatorFactoryBean

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

    如图here

  2. # 2 楼答案

    你的目录结构如何?看起来您将yout ReloadableResourceBundle的basename设置为与属性文件名匹配。相反,它必须与您放置邮件文件的文件夹相匹配。并将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/