从Struts 2中的Action Class访问ApplicationResource.properties文件

时间:2011-03-11 08:18:34

标签: struts2

我可以从Struts 2中的Action Class访问ApplicationResource.properties文件密钥 并更新密钥的值?

2 个答案:

答案 0 :(得分:4)

我认为你不能直接更新这些密钥的值,这会破坏它作为(静态)资源的目的。
但是,您可以使用占位符。

<强> ApplicationResources.properties

property.key=Hi {0}, there's a problem with {1}

<强> MyAction.java

public ActionForward execute(ActionMapping mapping,
                             ActionForm form,
                             javax.servlet.ServletRequest request,
                             javax.servlet.ServletResponse response)
                      throws java.lang.Exception {
MessageResources msgResource = getResources(request);
String msg = msgResource.getMessage("property.key", "Sankar", "updating values in the resources.");
}

答案 1 :(得分:1)

是的,可能。 假设您在applicationResources.properties文件中有属性error.login。 例如:error.login =无效的用户名/密码。请再试一次。

然后在Action类中你可以像这样访问它:getText(“error.login”)

完整示例:

applicationResources.properties

error.login= Invalid Username/Password

LoginAction.java

package net.sumitknath.struts2;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport {

    private String username;

    private String password;

    public String execute() {
        if (this.username.equals("admin") && this.password.equals("admin123")) {
            return "success";
        } else {
            addActionError(getText("error.login"));
            return "error";
        }
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}