jsp
  <body>
    <s:form action="login.action" method="post">
       <s:textfield name="user.username"/><br/>
       <s:password name="user.password" /><br/>
       <s:submit value="submit"/> 
    </s:form>
  </body>
action:
public class LoginAction extends ActionSupport { private User user; public User getUser() {
return user;
}
public void setUser(User user) {
System.out.println("set");
this.user = user;
}
        public String execute() throws Exception {
System.out.println(user.getUsername());
return SUCCESS;
}
User.java
    public String username;
    public String password;

    public User() {
}
    
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;
}

解决方案 »

  1.   

    action:
    private User user = new User();
      

  2.   

        报空指针异常,就是不执行set方法,但是execute方法执行。
      

  3.   

    现在不是空指针异常,是输出的结果为null
      

  4.   

    核心过滤器在web.xml加入了吧?
      

  5.   

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

  6.   

    User内提供两个属性的构造函数,action用getUser().getUsername()
      

  7.   

    没有绑定user对象,难不成你修改过默认拦截器?
      

  8.   

    实在不行就设置两个private的String:username、password
      

  9.   

    1、采用这种方式:implements ModelDriven<User>
    public User getModel() {
    return user;
    }
    2、采用非ModelDriven时候,采用对象的get和set方法!
      

  10.   

    表单的action对应action类里的方法