【问题标题】:I can't "override" @NotEmpty message with .properties我不能用 .properties “覆盖”@NotEmpty 消息
【发布时间】:2014-09-19 13:12:34
【问题描述】:

我正在学习 Spring 3,并尝试使用 org.hibernate.validator.constraints.NotEmpty 类验证表单。

例如,我能够覆盖 @Size 消息 (javax.validation.constraints.Size) 和 @Email 消息 (org.hibernate.validator.constraints.Email) 从 .properties 文件中检索消息。

但我无法覆盖org.hibernate.validator.constraints.NotEmpty 默认消息。我总是收到默认消息“可能不是空的”

这是我的 XXXX-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

 <mvc:annotation-driven/>     

      <mvc:interceptors>
        <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
             <property name="paramName" value="lang" />
        </bean>
    </mvc:interceptors> 

    <context:component-scan base-package="com.springgestioneerrori.controller" />     

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
        <property name="prefix" value="/WEB-INF/views/" />
        <property name="suffix" value=".jsp" />
    </bean>    

    <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <property name="basename" value="classpath:messages" />
        <property name="defaultEncoding" value="UTF-8"/>
    </bean>

    <bean id="localeChangeInterceptor"
        class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
        <property name="paramName" value="lang" />
    </bean>

    <bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver" >
        <property name="defaultLocale" value="en"/>
    </bean>

    <bean id="handlerMapping"
        class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
        <property name="interceptors">
            <ref bean="localeChangeInterceptor" />
        </property>
    </bean>

</beans>

这是我的用户类

package com.springgestioneerrori.model;    


import javax.validation.constraints.Size;   
import org.hibernate.validator.constraints.NotEmpty;

public class Utente {


    @NotEmpty 
    @Size(min=3,max=20)
    private String nome;            

    public String getNome() {
        return nome;
    }
    public void setNome(String nome) {
        this.nome = nome;
    }   

}

这是我的表格

.......
<form:form action="formSent" method="post" commandName="utente">
<form:errors path="*" cssClass="errorblock" element="div" /><br/><br/>
<spring:message code="form.label.utente.nome"/><form:input path="nome"/><form:errors path="nome" cssClass="error" /><br>  
<input type="submit">
</form:form>
 ......

这是我的控制器

........
    @RequestMapping("/formSent")
    public String formSent(Model model, @Valid Utente utente, BindingResult result){    

        if(result.hasErrors()){
            model.addAttribute("utente", utente);   
            return "form";
        }
        else{
            model.addAttribute("msg", "inserimento effettuato con successo");
            return "formSent";
        }       
    }
.........

这是我的属性文件

    NotEmpy.utente.nome = il campo nome non può essere vuoto //Im NOT able to get this message
    Size.utente.nome = Il nome deve contenere tra 2 e 30 lettere //Im able to get this message

【问题讨论】:

    标签: java spring jsp


    【解决方案1】:

    您必须创建一个文件ValidationMessages.properties 并将其放在应用程序的类路径中。 Hibernate 验证器使用org.hibernate.validator.constraints.NotEmpty.message 键来翻译消息

    org.hibernate.validator.constraints.NotEmpty.message=il campo nome non può essere vuoto
    

    在这里查看更多信息:

    http://docs.jboss.org/hibernate/validator/4.3/reference/en-US/html/validator-usingvalidator.html#section-message-interpolation

    更新

    要自定义单个消息,请使用以下内容:

    @NotEmpty( message = "{NotEmpy.utente.nome}" )
    @Size(min=3,max=20, message = "{Size.utente.nome}")
    private String nome;
    

    【讨论】:

      【解决方案2】:

      试试这个 -

      @NotEmpty(message = "{NotEmpy.utente.nome}" ) 私有字符串名称;

      【讨论】:

      • 感谢您的帮助。我犯了一个非常愚蠢的错误。在属性文件中,我写了 NotEmpy 而不是 NotEmpty。抱歉耽误你时间:)
      【解决方案3】:

      感谢您的帮助。我犯了一个非常愚蠢的错误。在属性文件中,我写了 NotEmpy 而不是 NotEmpty。抱歉耽误你时间:)

      【讨论】:

        猜你喜欢
        • 2015-01-10
        • 2012-08-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-01
        • 1970-01-01
        • 2023-03-17
        相关资源
        最近更新 更多