2010-09-01 47 views
1

我正在使用Spring 3.0。 C:我可以从localdrive例如读取属性文件\道具\ mylogin.properties(未下的webapps /应用服务器)阅读Spring Validator类中属性文件的内容

mylogin.properties

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

我想使用上述我的Validator类(java bean类)。 请注意:我使用多动作控制器不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> 

如果资源包已被使用,我在回答中提出了什么改变?

例如,如果我想设置一个PageSize int pagesize = 5; --->从属性文件中得到这个

mylogin.properties

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

回答

-1

好吧按照以下方式排序: mav = new ModelAndView mav.addAllObjects(errors.getModel());

and in jsp using

2

错误消息通常是最好的,因为一个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,因此您需要传入“默认错误消息”作为第三个参数。