我正在使用Spring 3.0。我可以从localdrive读取属性文件,例如:C:\ prop \ mylogin.properties(不在webapps / application server下)
mylogin.properties
login.heading=Login
login.username=Username
login.password_blank=Password cannot be blank
我想在Validator类(java bean类)中使用上面的内容。 请注意:我使用MultiAction Controller而不是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; ---&GT;从属性文件中获取
mylogin.properties
login.heading=Login
login.username=Username
login.password_blank=Password cannot be blank
login.page_row_size=5
答案 0 :(得分: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
,因此需要传递“默认错误消息”作为第3个参数。
答案 1 :(得分:-1)
好吧通过以下方式对此进行了排序 mav = new ModelAndView mav.addAllObjects(errors.getModel());
并在jsp中使用