使用OGNL表达式类型转换时,struts是自动转换的。但是集合类型需要配置。

一、User类

一个普通一般的类

package com.meetcomet.entity;

public class User {
    

    private String username;
    private String password;
    private String email;
    
    
    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;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }

    
}
View Code

二、UserListAction

public class UserListAction  extends ActionSupport{
    
    private  List<User> users;
    
  public String execute() throws Exception { users = new ArrayList(); User u1= new User(); u1.setUsername("张三"); u1.setPassword("123456"); u1.setEmail("zhangshan@qq.com"); .....(添加了4个user).... return SUCCESS; } public List<User> getUsers() { return users; } public void setUsers(List<User> users) { this.users = users; } }

三、配置文件
UserListAction-conversion.properties

Element_users=com.meetcomet.entity.User

注意为固定写法,users为UserListAction中的成员变量。

四、jsp文件

1.输入

 

    <s:form action="/user/userlist">
         <s:iterator value="new int[4]" status="st">
             <tr>
                 <td>
                     <s:textfield name="users[%{#st.index}].username" label="用户名"/>
                 </td>
                 <td>
                     <s:password name="users[%{#st.index}].password" label="密码"/>
                 </td>
                 <td>
                     <s:textfield name="users[%{#st.index}].email" label="email"/>
                 </td>
             </tr>
         </s:iterator>
         <s:submit value="提交 "/>
    </s:form>

 

2.显示

<table>
    <th>
    <td>用户名</td><td>密码</td><td>email</td>
    </th>
    <s:iterator value="users" status="st">
        <tr>
            <td><s:property value="username"/></td>
            <td><s:property value="password"/></td>
            <td><s:property value="email"/></td>
        </tr>
    </s:iterator>
    <tr>
    </tr>
</table>

运行后会显示用户列表。

 ------------------------------------

关于SET集合,我按照通常的做会产生如下的错误

Error setting expression 'users.makeNew[0].username' with value '[Ljava.lang.String;@5ab5b91'
ognl.OgnlException: Error getting property descriptor: null
 at com.opensymphony.xwork2.ognl.accessor.XWorkCollectionPropertyAccessor.getProperty法

根据http://javaligang.blog.51cto.com/5026500/874468的说法,暂时不知道怎么处理好。

 

 

posted on 2013-11-06 13:59  meetcomet  阅读(292)  评论(0编辑  收藏  举报