这个写法我也不知道,这样写你Action中的属性又怎样取得,难道属性命名 user.name??合法??一般写法 <input type="text" name="username">

解决方案 »

  1.   

    举例说明。
    比如你要做一个用户注册,你可能已经创建了一个实体类,假如叫做 User,保存的是与用户相关的信息(比如用户名、地址等)。
    public class User
    {
      private String name;  //getter & setter
    }
    然后你去使用Struts2,我们知道,Struts2是使用Action来接收请求参数的,所以这个时候你必须在Action中定义一些用户信息,与 User 类中的用户信息是对应的。显然,这样做很麻烦,会多很多重复的代码。所以我们在写这个Action的时候,就不再一一定义那些用户名、地址等等的了。直接这样定义:
    public MyAction
    {
      private User user = new User(); //在Struts2中,也可以不实例化  //setter & getter
    }
    那么页面上如何给Action中的user中的name赋值呢?用的就是“user.name”啦,意思是“当前Action中的user中的name”。呵呵。小结:
    1、“user.name”的意思就是“当前Action中的user中的name”
    2、这样做的好处很多:省代码、使用方便……等
    3、除Struts2外,其它某些框架(比如Struts1)中也有类似用法
      

  2.   


    的确是这个样子的,你在 action中 有一个属性 User  这个User有一个 name的属性。你这样写 就自动的 把这个input的值和 user中的name绑定了
      

  3.   

    同意二楼的,你以后结合Hibernate创建POJO时就要用了,比如他说的例子,User表对应的是User类,Struts表单标签就得用User类的实例化对象user.name
      

  4.   

    user.username
    user在action中要写的一个POJO类
      

  5.   

    1.user是Action的一个属性变量,它有get/set方法。
    2.user属性的类型是一个JavaBean类型,它里面有name属性等等。。例:
    JavaBean:public class UserBean {   private String name;
       private String password;   //两个属性变量都有get/set方法。
    }struts2 Action写法:public class LoginAction extends ActionSupport {    private UserBean user;
       
        // user有get/set方法}你画面就可以那么写了。
      

  6.   

    <input name="user.name" > 
    user是action的一个属性
    name是user的属性struts2在找的时候,会到action中找user属性,然后在找user中的name属性
    工作方式如下:getUser().getName()
      

  7.   

    package com.struts2.model;public class User {
    private String username;
    private String password; 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;
    }
    }
    package com.struts2.action;import com.opensymphony.xwork2.ActionSupport;
    import com.struts2.model.User;public class UserAction extends ActionSupport {
    /**
     * 此处的action为了防止getter和setter方法过多 所以用了一个User对象的引用 保持action的代码整洁
     */
    private User user; public User getUser() {
    return user;
    } public void setUser(User user) {
    this.user = user;
    } @Override
    public String execute() throws Exception { if ("abc".equalsIgnoreCase(user.getUsername())
    && "cde".equalsIgnoreCase(user.getPassword())) {
    return SUCCESS;
    } else {
    return ERROR;
    } }
    }
      

  8.   

    页面上就 这样写就行了
    <s:form action="login" method="post">
           <s:textfield  name="user.username" label="username"/>
        <s:textfield  name="user.password" label="password"/>
        <s:submit value="submit"/>
        </s:form >