【问题标题】:Where should I provide the getters and setters for parameters in Struts2?我应该在哪里为 Struts2 中的参数提供 getter 和 setter?
【发布时间】:2014-03-20 08:42:38
【问题描述】:

我是 Struts2 的新手,我刚刚意识到,每当我通过 JSP 页面的形式调用一个动作类时,我需要为被调用的动作类中的所有参数设置 getter 和 setter 来访问参数,如图所示下面的动作类:

public class LoginAction extends ActionSupport {

    private String userName;
    private String password;

    public String execute {
    System.out.println(this.userName+" "+this.password);
    return "success";
    }

    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;
    }
}

但是,我还有一个用于 User 的 POJO 类,它具有相同的 2 个属性及其 getter 和 setter。有没有办法可以在我的动作类中使用这些 getter/setter?现在,我的 POJO 和动作类中都有 getter 和 setter。任何人都可以帮助如何消除这种冗余?

【问题讨论】:

    标签: java jsp struts2 ognl valuestack


    【解决方案1】:

    action bean 放在值栈的顶部,参数通过名字直接访问,即userNamepassword。 Struts2 使用 OGNL 访问值堆栈中的对象,因此如果您将 POJO 放入值堆栈,它将可以通过 OGNL 访问。例如

    public class LoginAction extends ActionSupport {
    
       private User user;
    
       public User getUser() {
            return user;
        }
    
        public void setUser(User user) {
            this.user = user;
        }
    }
    

    它应该使用参数名称user.userNameuser.password

    【讨论】:

    • 感谢您的快速回答。同样在这种情况下,我有 2 个属性 - 用户名和密码。如果我只发送用户名作为表单的一部分,我应该再次使用你提到的 POJO getter setter,或者只是在我的操作类中为用户名使用单独的 getter setter?
    • 您应该使用 OGNL 表示法来访问 bean 属性。点允许引用嵌套 bean 的属性。如果您不访问嵌套 bean 的属性,而是从值堆栈的顶部访问操作类 bean,那么您可以按名称访问它们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-13
    • 1970-01-01
    • 2017-10-09
    • 1970-01-01
    相关资源
    最近更新 更多