java - 读取Spring Validator类中属性文件的内容

标签 java spring spring-mvc

我正在使用 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/

相关文章:

java - Spring JMS 无法连接到 JBoss EAP 7.1 ActiveMq Artemis

java - 使用 CruiseControl.net 将 Java 应用程序部署到 Tomcat

java - mvn 测试期间连接 JVM

java - 如何使用 JSP 中 PropertyPlaceholderConfigurer 中指定的属性文件中的属性

java - SPRING beans 中的条件 "ref"

java - request.getMethod().equalsIgnoreCase ("post") 在 (pre-Spring-3.0) Spring 博客应用程序中是个坏主意吗?

hibernate - Spring Mvc Controller - 删除问题

java - 我可以在一台服务器上拥有多个 Java 应用程序服务器吗?

java - HttpURLConnection 与 https InputStream 乱码

java - @RequestMapping 在渲染方法中带有 2 个参数