将值从jsp传递给Action.for java.util.Set

时间:2014-07-18 11:11:39

标签: java jsp struts2 type-conversion

我想从JSP设置登录的Set元素的值。

JSP页面:

  <form action="Registered" method="post"> 
        <div class="form-group">
            <label>Company Name</label>
            <s:textfield name="name" value="%{name}" id="name"/>
        </div>
        <div class="form-group">
            <label>Address</label>
            <s:textarea name="address" value="%{address}" id="address"/>
        </div>
        <div class="form-group">
            <label>User Name</label>
            <s:textfield name="logins[0].userName" value="%{logins[0].userName}" id="userName"/>
        </div>
        <div class="form-group">
            <label>User Id</label>
            <s:textfield name="logins[0].userId" value="%{logins[0].userId}" id="userId"/>
        </div>
        <div class="form-group">
            <label>Mail Id</label>
            <s:textfield name="logins[0].userMailid" value="%{logins[0].userMailid}" id="userMailid"/>
        </div>

        

Pojo Classes

public class Client  implements java.io.Serializable {
  private Set logins = new HashSet(0);
  //getter and setter
 }



 public class Login implements java.io.Serializable {

    private Long id;
    private Client client;
    private String userId;
    private String userName;
    private String userMailid;
 }

行动类

public String register() {
        Client cl = new Client();
        System.out.println(cl.getName() + " " + cl.getAddress());
  }

我想将set的值设置为Client和Login的Action类。

怎么做?

2 个答案:

答案 0 :(得分:0)

您可以使用这样的提交按钮:

 <form action="Registered" method="post"> 
            <div class="form-group">
                <label>Company Name</label>
                <s:textfield name="name" value="%{name}" id="name"/>
            </div>
            <div class="form-group">
                <label>Address</label>
                <s:textarea name="address" value="%{address}" id="address"/>
            </div>
            <div class="form-group">
                <label>User Name</label>
                <s:textfield name="logins[0].userName" value="%{logins[0].userName}" id="userName"/>
            </div>
            <div class="form-group">
                <label>User Id</label>
                <s:textfield name="logins[0].userId" value="%{logins[0].userId}" id="userId"/>
            </div>
            <div class="form-group">
                <label>Mail Id</label>
                <s:textfield name="logins[0].userMailid" value="%{logins[0].userMailid}" id="userMailid"/>
            </div>
          <input type="submit" value="Submit">
        </form>

修改

一个不错的tutorial

在make属性文件之后:

#Global messages
name= name
submit = Submit

我相信你已经制作了Registered.jsp。

你可以运行你的项目!

答案 1 :(得分:0)

要将fildes绑定到Set,您应该在此属性上添加注释

public class Client  implements java.io.Serializable {

  @Element(value = Login.class)
  @Key(value = Long.class)
  @KeyProperty(value = "id") 
  @CreateIfNull(value = true)
  private Set logins = new HashSet(0);
  //getter and setter

  //now you need a property for login id, it should be initialized before JSP is populated
  private Long loginId;
  //getter and setter
}

现在绑定到JSP的字段更改为

<s:textfield name="logins(%{loginId}).userName" id="userName"/>

与绑定到集合的其他字段相同。

如果您正在使用iterator标记迭代一个集合,并且您在值堆栈顶部推送了Login的实例,那么您可以获取其id而不是使用loginId