Pessoal
Eu estou tendo problemas para deixar como “checked” as opções numa multibox. Vou mostrar o código abaixo. Tá meio grandinho, mas eu gostaria muito de uma ajuda, pois é meio urgente eu resolver logo esse problema… =]
O FormBean:
.....
private LabelValueBean[] possibleOptions;
private String[] selectedOptions ;
public Sessao() {
// Initialize the LabelValueBeans in the possibleOptions array.
LabelValueBean[] lvBeans = new LabelValueBean[Constantes.PESOS_FORMULARIO.length];
for (int i = 0; i < Constantes.PESOS_FORMULARIO.length; i++){
lvBeans[i] = new LabelValueBean(Constantes.ITENS_FORMULARIO[i], Integer.toString(Constantes.PESOS_FORMULARIO[i]));
}
this.possibleOptions = lvBeans;
} // fim sessao()
// métodos getters e setters
Na Action antes de chamar a página JSP:
int formulario = sessao.getFormulario();
System.out.println(formulario);
System.out.println("Aqui tá pegando o formulario, os seus pesos");
Vector v = new Vector();
for (int i=0; i<Constantes.PESOS_FORMULARIO.length; i++){
if ((Constantes.PESOS_FORMULARIO[i]&formulario)==Constantes.PESOS_FORMULARIO[i]){
v.addElement(new Integer (Constantes.PESOS_FORMULARIO[i]));
}
}
String[] selecionados = new String[v.size()];
for (int i=0 ;i<v.size(); i++){
selecionados[i] = ""+v.elementAt(i);
// System.out.println(selecionados[i]);
}
sessao.setSelectedOptions(selecionados);
//for (int i=0; i<v.size();i++){
httpSession.setAttribute(Constantes.FORMULARIO, selecionados );
System.out.println(httpSession.getAttribute("selectedOptions"));
//}
sessao.setStr_formulario("1");
SessaoDAO.update(sessao);
System.out.println(sessao.getSelectedOptions().length);
System.out.println("FInal de preencher sessao");
ac = new ActionForward("/adm/pages/editarSessaoFormulario.jsp?id_sessao="+id_sessao+"&formulario="+formulario);
return ac;
Na página JSP
<logic:iterate name="sessao" id="item" property="possibleOptions">
<tr>
<td><html:multibox name="sessao" property="selectedOptions">
<bean:write name="item" property="value" />
</html:multibox>
<bean:write name="item" property="label" /><br/>
</td>
</tr>
</logic:iterate>
<html:hidden property="id_sessao" value="<%=sessao.getId_sessao().toString()%>"/>
<html:submit value="Ok"/>
E na Action após submeter:
String id_sessao = (String)request.getParameter("id_sessao");
Sessao sessao = SessaoDAO.find(new Long (id_sessao));
int soma_pesos = 0;
// Se nenhuma checkbox for selecionada, a função reset define selectedOptions como 0, para não dar erro de null
if (request.getParameter("selectedOptions") == null || request.getParameter("selectedOptions").equals("") ) {
sessao.reset2();
String mensagem = "sem selecao";
System.out.println(mensagem);
soma_pesos = 0;
sessao.setFormulario(soma_pesos);
SessaoDAO.update(sessao);
}
else {
String[] selecionados = (String[])request.getParameterValues("selectedOptions");
for (int i=0; i<selecionados.length; i++){
System.out.println("selecao feita com peso"+selecionados[i]);
soma_pesos = soma_pesos + Integer.parseInt(selecionados[i]);
}
sessao.setFormulario(soma_pesos);
SessaoDAO.update(sessao);
System.out.println(soma_pesos);
System.out.println("Aqui ta mostrando o peso depois de AdicionarFormularioAction");
}
ActionForward ac = new ActionForward("/adm/pages/editarPropriedadesEvento.jsp?id_sessao="+id_sessao);
return ac;
Assim, eu consigo setar o vetor de opções selecionadas antes de chamar a página JSP, e depois também… O problema é q qdo chego na JSP fica nulo…
Agradeceria se alguém pudesse dar uma mãozinha.