Problemas com multibox Struts

0 respostas
maxmustang

Fala galera, blz?
Meu problema ta sendo o seguinte, eu tenho uma lista de multibox que vem do banco

<c:when test="${convenio.globalAsPrimitive}">
 <html:multibox name="EscolherConvenios" property="selectedConvenios">
  <bean:write name="convenio" property="id"/>
 </html:multibox>
</c:when>

Tenho uma action que marca todas as multibox, uma que desmarca todas as multibox e uma que grava no banco.
Por enquanto eu só tenho duas multibox, quando eu marco uma e desmarco outra, eu consigo gravar normalmente, quando eu marco as duas com o click eu tambem consigo gravar normalmente, o problema é quando eu desmarco as duas manualmente elas vem para a action

public ActionForward processa(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response, Session hibernateSession) {
        EscolherConveniosForm mForm = (EscolherConveniosForm) form;
        Usuario usuario = (Usuario) request.getSession().getAttribute(AbstractSecureAction.HTTPSESSION_USUARIO_LOGADO);
        usuario = (Usuario) hibernateSession.load(Usuario.class, usuario.getId());

        Set<Convenio> convenios = new HashSet();
        String[] x = mForm.getSelectedConvenios();
        System.out.println(x);
        if (x == null) {
        } else {
            for (String s : mForm.getSelectedConvenios()) {
                mForm.reset();
                Convenio c = (Convenio) hibernateSession.load(Convenio.class, Integer.valueOf(s));
                System.out.println(s);
                System.out.println(c.getNome());
                convenios.add(c);
            }
            hibernateSession.save(usuario.getCliente());
        }


        for (Convenio c : mForm.getConvenios()) {
            if (c.getGlobalAsPrimitive() == Boolean.FALSE) {
                convenios.add(c);
            }
        }

        usuario.getCliente().getConvenios().clear();


        usuario.getCliente().setConvenios(convenios);
        hibernateSession.flush();
        return mapping.findForward(SUCESSO);
    }

como se estivessem preenchidas. Ja li sobre o reset e tal, mas nao tenho ainda ideia de como fazer pra saber se as duas estao marcadas ou nao

Criado 10 de novembro de 2010
Respostas 0
Participantes 1