我正在使用 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 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");
}
您好,我们正在使用资源包,不确定如何在 validator 中使用它?
<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 页大小=5; ---> 从属性文件中获取此内容
mylogin.properties
login.heading=Login
login.username=Username
login.password_blank=Password cannot be blank
login.page_row_size=5
最佳答案
错误消息通常最好作为 Java ResourceBundle
和 JSTL 的标准组合来处理,但这不适用于从文件系统上的任意位置加载属性。
所以你必须更多地手动做一些事情。最简单的事情是注入(inject)属性文件的位置,然后从中提取属性:
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
,因此您需要传入“默认错误消息”作为第三个参数。
关于java - 读取Spring Validator类中属性文件的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3617126/