Problemas em deixar uma opção checada com multibox

1 resposta
D

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.

1 Resposta

M

Sugiro criar mapeamentos das suas actions, sete como atributo do seu request as lista que serão usadas no seu multibox .

:okok:

Criado 26 de julho de 2006
Ultima resposta 31 de jul. de 2006
Respostas 1
Participantes 2