【问题标题】:Reading the content of property file in Spring Validator Class在 Spring Validator 类中读取属性文件的内容
【发布时间】:2010-09-03 21:09:25
【问题描述】:

我正在使用 Spring 3.0。我可以从本地驱动器读取属性文件,例如:C:\prop\mylogin.properties(不在 webapps/应用程序服务器下)

mylogin.properties

login.heading=Login
login.username=Username
login.password_blank=Password cannot be blank

我想在我的 Validator 类(java bean 类)中使用上述内容。 请注意:我使用的是 MultiAction 控制器而不是 SpringFormController

 public class MyUserValidator implements Validator 
    {

@Override
    public void validate(Object command, Errors errors) {
         String msg=null;
     //some conditions checked
         String msg=login.password_blank;-------->get from property file ??
        errors.rejectValue("User",msg,"defaultvalue");   

}

您好,我们正在使用资源包,不确定如何在验证器中使用它?

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource" lazy-init="true"> 
       <property name="basenames"> 
       <list> 

      <value>${deployment.properties.path}/xyzsite/mylogin</value>   

 </list> 
 </property> 
<property name="cacheSeconds" value="${deployment.properties.cache_in_seconds}"/> 
</bean> 

如果使用资源包,我 cud 在你提到的答案中做了什么改变?

例如,如果我想设置 PageSize 整数页大小=5; ---> 从属性文件中获取这个

mylogin.properties

login.heading=Login
login.username=Username
login.password_blank=Password cannot be blank
login.page_row_size=5

【问题讨论】:

    标签: java spring spring-mvc


    【解决方案1】:

    错误消息通常最好作为 Java ResourceBundle 和 JSTL 的标准组合来处理,但这不适用于从文件系统上的任意位置加载属性。

    因此,您将不得不更多地手动操作。最简单的方法是注入属性文件的位置,然后从中提取属性:

    public class MyUserValidator implements Validator {
    
        private Resource propertiesLocation;
    
        @Required
        public void setPropertiesLocation(Resource propertiesLocation) {
            this.propertiesLocation = propertiesLocation;
        }
    
        @Override
        public void validate(Object command, Errors errors) {
            try {
                Properties props = PropertiesLoaderUtils.loadProperties(propertiesLocation);
    
                String key = "login.password_blank";
                String errorMessage = props.getProperty(key);
                errors.rejectValue("User", key, errorMessage);
            } catch (IOException e) {
                // handle me
            }
        }
    }
    

    在配置中:

    <bean id="userValidator" class="com.x.MyUserValidator">
      <property name="propertiesLocation" value="file:/prop/mylogin.properties"/>
    </bean>
    

    注意以下行:

    errors.rejectValue("User", key, errorMessage);
    

    由于您没有使用ResourceBundle,因此您需要传入“默认错误消息”作为第三个参数。

    【讨论】:

      【解决方案2】:

      好的,通过以下操作进行排序 mav=新模型和视图 mav.addAllObjects(errors.getModel());

      在jsp中使用

      【讨论】:

        猜你喜欢
        • 2023-02-03
        • 1970-01-01
        • 2013-05-26
        • 1970-01-01
        • 2016-04-29
        • 1970-01-01
        • 2018-05-24
        • 2018-10-12
        • 2013-02-07
        相关资源
        最近更新 更多