文件如下
LoginActionForm.javaimport com.opensymphony.xwork2.ActionSupport;
import com.lee.user.user.*;public class LoginActionForm extends ActionSupport{
User us = new User();
public String execute(){
System.out.println("username:"+us.getUserName());
System.out.println("password:"+us.getPassWord());
return SUCCESS;
}}User.javapublic class User {
private String UserName;
private String PassWord;


/**
 * @return the userName
 */
public String getUserName() {
return UserName;
}
/**
 * @param userName the userName to set
 */
public void setUserName(String userName) {
UserName = userName;
}
/**
 * @return the passWord
 */
public String getPassWord() {
return PassWord;
}
/**
 * @param passWord the passWord to set
 */
public void setPassWord(String passWord) {
PassWord = passWord;
}}login.jsp<s:form action="login" method="post">
   <s:textfield name="UserName" label="用户名"></s:textfield>
   <s:password name="PassWord" label="密码"></s:password>
   <s:submit label="登陆" value="登陆"></s:submit>
  </s:form>struts.xml<package name="default" namespace="/" extends="struts-default">
  <action name="loginindex">
  <result>login.jsp</result>
  </action>
  <action name="login" class="com.lee.user.form.LoginActionForm">
  <result name="success">wellcom.jsp</result>
  <result name="error">error.jsp</result>
  </action>
 
  <action name="goback">
  <result name="success">login.jsp</result>
  </action>
 
  </package>web.xml <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <filter>
   <filter-name>struts2</filter-name>
   <filter-class>
   org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
   </filter-class>
  </filter>
  <filter-mapping>
   <filter-name>struts2</filter-name>
   <url-pattern>/*</url-pattern>
  </filter-mapping>为什么在action中定义页面属性就能获取到值,但是像这样分开后就拿不到值了呢?求解.

解决方案 »

  1.   

    public class LoginActionForm extends ActionSupport{
        User us = new User();//不需要new User 为us生成getter和setter方法
        public String execute(){
            System.out.println("username:"+us.getUserName());
            System.out.println("password:"+us.getPassWord());
            return SUCCESS;
        }}<s:form action="login" method="post">
       <s:textfield name="UserName" label="用户名"></s:textfield>// name=us.UserName
       <s:password name="PassWord" label="密码"></s:password> // name=us.PassWord
       <s:submit label="登陆" value="登陆"></s:submit>
      </s:form>
      

  2.   

    private User us;封装
    jsp中
     <s:textfield name="us.UserName" label="用户名"></s:textfield>
      

  3.   


    public class LoginActionForm extends ActionSupport{
        User us = new User();
        public String execute(){
            System.out.println("username:"+us.getUserName());
            System.out.println("password:"+us.getPassWord());
            return SUCCESS;
        }
    以上写也可以 你继承user类就ok了不过不能用execute()方法了 而行写项目都不用execute方法的
    配置struts2 method=“方法名”
    <action name="login" class="com.lee.user.form.LoginActionForm" method="方法名">
      

  4.   


    public class LoginActionForm extends ActionSupport{
      User us = new User();
      public String execute(){
      System.out.println("username:"+us.getUserName());
      System.out.println("password:"+us.getPassWord());
      return SUCCESS;
      }
    以上写也可以 你继承user类就ok了不过不能用execute()方法了 而行写项目都不用execute方法的
    配置struts2 method=“方法名”
    <action name="login" class="com.lee.user.form.LoginActionForm" method="方法名">
     
      

  5.   

      你是用Spring依赖注入的吗?  在LoginActionForm 类中你就不需要再取NEW 不然的话它每次都是NEW一个新的,所以为空,
      

  6.   

    页面上的
    <s:textfield name="UserName" label="用户名"></s:textfield>
       <s:password name="PassWord" label="密码"></s:password>
    name属性值最好小写。
      

  7.   

    感谢 ,感谢, 不管怎么的是得到值了, 但是页面的name不想us.UserName 这样写 , 只想把name赋值为Userame也不知道有没有别的办法呢 ?
      

  8.   

    使用ModelDriven。
    action实现ModelDriven接口。
    可参考ModelDrivenIntercepter