我正在尝试确定预填充使用Struts2表单标记创建的某些复选框的最佳/最简单方法。我的应用程序是一个“正常”的三层设置,在控制器层使用Struts2。
在我真正深入挖掘之前,标签是否支持创建所有可能的复选框列表,然后填充它(例如,通过以下操作)?
示例动作:
public class UserManagementAction extends ActionSupport implements Preparable {
private List<String> allRoles;
private List<String> rolesToPrepopulate;
// get/set methods
public void prepare() throws Exception {
// populate the allRoles and rolesToPrepopulate lists
}
public String execute() throws Exception {
return INPUT;
}
(注意:假设struts.xml已经配置了为INPUT返回的JSP)
感谢您的帮助。
杰森
答案 0 :(得分:1)
我要做的是一个新的对象类,并将其用作复选框。
例如:
public class StrutsCheckbox {
private Integer id;
private Boolean selected;
...
}
在prepare()
方法中,您可以根据需要设置selected
字段(以及id
所有字段)。
接下来在JSP中:
<s:iterator value="allRoles">
<s:checkbox name="selected" id="selected" fieldValue="%{id}" value="%{selected}"/>
</s:iterator>
然后在提交操作中,选择的集合将填充ID。
public class UserManagementAction extends ActionSupport implements Preparable {
private List<StrutsCheckbox> allRoles;
private List<StrutsCheckbox> rolesToPrepopulate;
private List<Integer> selectedCheckboxes;
// get/set methods
public void prepare() throws Exception {
// populate the allRoles and rolesToPrepopulate lists
// fill and set allRoles and/or rolesToPrepopulate
}
public String execute() throws Exception {
return INPUT;
}
public String submit() throws Exception {
// list selectedCheckboxes is filled with selected fields id's
return INPUT;
}
也许有一些更正可以,但主要的想法就在这里。