Java 我应该在哪里为Struts2中的参数提供getter和setter?

Java 我应该在哪里为Struts2中的参数提供getter和setter?,java,jsp,struts2,ognl,valuestack,Java,Jsp,Struts2,Ognl,Valuestack,我是Struts2的新手,我刚刚意识到,每当我通过JSP页面的形式调用action类时,我需要为被调用action类中的所有参数设置getter和setter,以访问下面action类中所示的参数: public class LoginAction extends ActionSupport { private String userName; private String password; public String execute { System.ou

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

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。有没有一种方法可以在action类中使用这些getter/setter?现在我的POJO和动作课上都有能手和二传手。有人能帮助消除这种冗余吗?

操作bean放在值堆栈的顶部,参数直接通过名称访问,即
用户名
密码
。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.userName
user.password

谢谢你的快速回答。在本例中,我还有两个属性-用户名和密码。在我只发送用户名作为表单的一部分的情况下,我应该再次使用您提到的POJO getter setter,或者在我的操作类中使用单独的getter setter作为用户名?您应该使用OGNL表示法来访问bean属性。点允许引用嵌套bean的属性。如果您不访问嵌套bean的属性,而是从值堆栈的顶部访问操作类bean,那么您可以通过名称访问它们。