Oi
Estou a fazer uma aplicação Web onde tenho várias checkboxes geradas dinamicamente de acordo com uma lista. Como é q eu posso identificar as checkboxes checkadas no controlador?
O meu código do jsp é o seguinte:
<form method="post" name="form1">
<table>
<tr>
<td>
<spring:bind path="groupPermOperations.groupId">
<select name="groupId" onClick="document.form1.submit();">
<c:forEach items="${groups}" var="group">
<option value="<c:out value="${group.group_Id}"/>" <c:if test="${group.group_Id==actual}">selected="selected"</c:if> ><c:out value="${group.group_Name}"/></option>
</c:forEach>
</select>
</spring:bind>
</td>
</tr>
</table>
</form>
<table>
<tr>
<td>
Grupo
</td>
<td>
Permissao
</td>
<td>
Patamar
</td>
</tr>
<form name="form2">
<c:forEach items="${ready}" var="perm" varStatus="loopStatus">
<tr>
<td>
<c:out value="${perm.groupId}"></c:out>
</td>
<td>
<input type="checkbox" name="permissionId" value="<c:out value="${perm.permissionId}"/>" <c:if test="${perm.stepVal!=0}">checked="checked"</c:if> >
<c:out value="${perm.permissionName}"></c:out>
</td>
<td>
<select name="stepId">
<c:forEach items="${steps}" var="step">
<option value="<c:out value="${step.stepId}"/>" <c:if test="${step.stepValue==perm.stepVal }">selected="selected"</c:if>>
<c:choose>
<c:when test="${step.stepValue==-1}"><font color="blue">indeterminado</font></c:when>
<c:when test="${step.stepValue==0}"><font color="red">sem acesso </font> </c:when>
<c:otherwise><c:out value="${step.stepValue}"/></c:otherwise>
</c:choose>
</option>
</c:forEach>
</select>
</td>
</tr>
</c:forEach>
</form>
<tr>
<td>
<input type="submit" value="test">
</td>
</tr>
</table>
o meu controlador, neste momento está definido assim:
public class PermissionChangeController extends SimpleFormController {
private GroupManager groupMan;
private GroupPermissionManager gpMan;
private StepManager stMan;
private PermissionManager pm;
protected final Log logger = LogFactory.getLog(getClass());
int groupId;
int stepId;
public ModelAndView onSubmit(Object command, BindException errors){
logger.info("tou no onSubmit");
groupId=((GroupPermOperations) command).getGroupId();
stepId=( (GroupPermOperations) command).getStepId();
return new ModelAndView(new RedirectView(getSuccessView()),errors.getModel());
}
protected Map referenceData(HttpServletRequest request) throws Exception {
List steps=stMan.getSteps();
List permissions=pm.getPermissions();
List groups=groupMan.getGroups();
List perms=gpMan.getPermissions(groupId);
LinkedList ready=new java.util.LinkedList<GroupPermOperations>();
for(int i=0;i<perms.size();i++){
GroupPermOperations gpo= new GroupPermOperations();
Group_Permission gp=new Group_Permission();
gp=(Group_Permission)perms.get(i);
gpo.setGroupId(gp.getGroup().getGroup_Id());
gpo.setPermissionName(gp.getPermission().getPermission_Description());
gpo.setStepVal(gp.getStep().getStepValue());
ready.add(i, gpo);
}
Map myModel = new HashMap();
myModel.put("ready", ready);
myModel.put("groups",groups);
myModel.put("actual",groupId);
myModel.put("steps", steps);
myModel.put("permissions", permissions);
return myModel;
}
Eu tenho uma classe que identifica o que eu quero apanhar do jsp. Essa classe está definida da seguinte forma:
public class GroupPermOperations {
private int groupId;
private String groupName;
private int permissionId;
private String permissionName;
private int stepId;
private double stepVal;
...
Portanto, o que eu quero é que os valores das checkboxes me criem um array de permissionId e que os valores dos varios selects criem um array de stepId. Alguém me pode dar uma dica?
Obrigado
Rui Gonçalves