2010-09-01 43 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,因此您需要傳入「默認錯誤消息」作爲第三個參數。