Struts2参数在动作类中为空

时间:2011-07-21 04:42:11

标签: struts2

我无法将jsp中文本框中输入的文本值获取到我的action类中。以下是我的档案。任何人都可以请求帮助,因为这是非常紧急的。

我的jsp是

<%@ taglib uri="/struts-tags" prefix="s" %>
<html>
<body>
  <s:form action="login" method="post">
    <s:textfield name="userName" label="User Name" />
    <s:submit type="button" id="submit" label="Submit"/>
    <s:reset id="reset" label="Reset"></s:reset>
  </s:form>
</body>
</html>

我的动作类是

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport {

    private String userName;

    public String getUserName() {
        return userName;
    }

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


    public String execute(){
                System.out.println("the userName is "+this.getUserName());
            return SUCCESS;
    }
}

我的struts.xml是

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
        <include file="struts-default.xml" />
    <package name="default" extends="struts-default">
        <action name="login" class="core.login.LoginAction">
            <result  name="error">>/webpages/login/Error.jsp</result>
            <result name="success">/webpages/home/Home.jsp</result>
        </action>
    </package>
</struts>

4 个答案:

答案 0 :(得分:2)

区分大小写很重要。

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

应该是:

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

答案 1 :(得分:0)

在你的struts.xml中,你写了

class="core.login.LoginAction"

但您没有在Action类中声明任何包。 setter和getter方法也有不同的名称。请记住,史蒂文说,他们是区分大小写的。 尝试删除一些额外的错误,例如额外的“&gt;”

答案 2 :(得分:0)

在文本字段中添加值属性,如下所示:

<s:textfield name="userName" label="User Name" value="${userName}" />

直接将它映射到动作类中的成员变量。

答案 3 :(得分:0)

在Eclipse中 解决区分大小写问题右键单击代码写入区域并转到源代码 - &gt;生成getter和setter方法 它将为选定的成员变量添加getter和setter方法。