我建了一个user的vo,里面只有name和password,建好了数据库操作的相关文件,在userAdd.jsp页面上
<s:form action="user" method="post">
   <s:textfield name="user.name" label="姓名"></s:textfield><br/>
     <s:password name="user.password" label="密码"></s:password>
   <s:submit value="提交"/>
</s:form>
这样写能把参数存到数据库里头,我想请问一下,  这里面两个name属性必须得这样写吗??我写成name="name"和name="password",Useraction里面都接收不到jsp页面传过来的参数,数据库里全是null,还有其它方法吗,总感觉这样写不太好!!UserAction.java:
package com.ecjtu.struts2.action;import com.ecjtu.struts2.dao.IUserDAOImpl;
import com.ecjtu.struts2.model.User;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;public class UserAction extends ActionSupport {

private User user = new User();
private IUserDAOImpl userDAO = new IUserDAOImpl();

public String execute() {

System.out.println(user.getName());
System.out.println(user.getPassword());

if("".equals(user.getName()) || "".equals(user.getPassword())){
return ERROR;
} else {
try {
if(userDAO.insert(user)) {
return SUCCESS;
} else {
return ERROR;
}
} catch (Exception e) {
e.printStackTrace();
}
}
return ERROR;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public IUserDAOImpl getUserDAO() {
return userDAO;
}
public void setUserDAO(IUserDAOImpl userDAO) {
this.userDAO = userDAO;
}
}

解决方案 »

  1.   

    那就在action中直接写username和password属性,
    或者用模型驱动的方式类似struts1中的actionform,
    其实用属性驱动的方式就是省略了actionform,往往actionform中的属性和vo对象中属性重复,
    本人还是比较喜欢使用属性驱动方式。
      

  2.   

    1.Action做法:使用ModelDriven接口:
    public class UserAction extends ActionSupport implements ModelDriven<User> {   private User user = new User();   public User getModel() {
            return user;
       }
    }2.jsp写法:
    <s:form action="user" method="post"> 
      <s:textfield name="name" label="姓名"> </s:textfield> <br/> 
        <s:password name="password" label="密码"> </s:password> 
      <s:submit value="提交"/> 
    </s:form>