Struts2 预选复选框列表
Struts2 preselected checkboxlist
我已经尝试了我发现的类似案例中的所有解决方案,但没有成功。
我的jsp.
<s:checkboxlist list = "positionsMap"
listKey = "%{key.toString()}"
listValue = "%{value}"
name = "selectedPositions"
value = "positionName"
label = "Position" />
positionsMap
是一个具有键 positionId
和值 positionName
.
的 Hashmap
selectedPositions
是一个包含预先检查位置的列表。使用调试器测试并从数据库中获取正确的值。
positions
是一个包含 id 和 name 的列表。
所以我的问题是如何显示预先选中存储在 selectedPositions
中的复选框。
我得到的结果是所有复选框都未选中。
如果不清楚,请问我。
提前致谢!
行动的更多信息:
private Object1 object= new Object1();
private List<Position> positionList = new ArrayList<>();
private List<Position> selectedPositions = new ArrayList<Position>();
private String positionName = new String();
private Map<Long,String> positionsMap = new HashMap<Long, String>();
//getters, setters
@Inject
transient ObjectDAO objectDAO;
@Inject
transient PositionDAO positionDAO;
public String edit() {
HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);
object= objectDAO.listById(Long.parseLong(request.getParameter("id")));
positionList = positionDAO.listPositions();
selectedPositions = object.getPositions();
for (int i = 0; i < positionList.size(); i++) {
Position row = (Position) positionList.get(i);
Long id = row.getPositionId();
positionName = row.getPositionName();
positionsMap.put(id, positionName);
}
return SUCCESS;
}
看到代码,我会改变策略:使用 OGNL 的列表投影功能从 List<Position>
创建一个 List<Long>
,然后正确设置密钥:
<s:checkboxlist list = "positionsMap"
name = "selectedPositions"
value = "selectedPositions.{positionId}"
label = "Position" />
我已经尝试了我发现的类似案例中的所有解决方案,但没有成功。
我的jsp.
<s:checkboxlist list = "positionsMap"
listKey = "%{key.toString()}"
listValue = "%{value}"
name = "selectedPositions"
value = "positionName"
label = "Position" />
positionsMap
是一个具有键 positionId
和值 positionName
.
selectedPositions
是一个包含预先检查位置的列表。使用调试器测试并从数据库中获取正确的值。
positions
是一个包含 id 和 name 的列表。
所以我的问题是如何显示预先选中存储在 selectedPositions
中的复选框。
我得到的结果是所有复选框都未选中。
如果不清楚,请问我。
提前致谢!
行动的更多信息:
private Object1 object= new Object1();
private List<Position> positionList = new ArrayList<>();
private List<Position> selectedPositions = new ArrayList<Position>();
private String positionName = new String();
private Map<Long,String> positionsMap = new HashMap<Long, String>();
//getters, setters
@Inject
transient ObjectDAO objectDAO;
@Inject
transient PositionDAO positionDAO;
public String edit() {
HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);
object= objectDAO.listById(Long.parseLong(request.getParameter("id")));
positionList = positionDAO.listPositions();
selectedPositions = object.getPositions();
for (int i = 0; i < positionList.size(); i++) {
Position row = (Position) positionList.get(i);
Long id = row.getPositionId();
positionName = row.getPositionName();
positionsMap.put(id, positionName);
}
return SUCCESS;
}
看到代码,我会改变策略:使用 OGNL 的列表投影功能从 List<Position>
创建一个 List<Long>
,然后正确设置密钥:
<s:checkboxlist list = "positionsMap"
name = "selectedPositions"
value = "selectedPositions.{positionId}"
label = "Position" />