Problema com lista em Struts1

2 respostas
maxmustang

fala galera, blz ?
seguinte… eu tenho uma lista que tem 2 atributos fixos que sao dois convenios globais[bradesco e sulamerica] e tambem fazem parte desta lista
convenios que o cliente cria.
Esse convenios globais sao representados com checkbox e os nao globais tem links pra excluir e alterar, alem de duas actions que marca-todos os globais e desmarca todos os globais

<c:forEach var="convenio" items="${EscolherConvenios.convenios}" varStatus="i">
                                                <tr class=" ${(i.count) % 2 == 0 ? 'cinza' : ''}">
                                                    <td align="left">${convenio.nome}</td>
                                                    <td align="center">
                                                        <c:choose>
                                                            <c:when test="${convenio.globalAsPrimitive}">
                                                                <html:multibox name="EscolherConvenios" property="selectedConvenios">
                                                                    <bean:write name="convenio" property="id"/>
                                                                </html:multibox>
                                                            </c:when>
                                                            <c:otherwise>
                                                                &lt;html:link action="/prepara-altera-convenio.do?id=${convenio.id}"&gt;<img       >&lt;/html:link&gt;
                                                                &lt;html:link action="/prepara-exclui-convenio.do?id=${convenio.id}"&gt;<img      >&lt;/html:link&gt;
                                                            &lt;/c:otherwise&gt;
                                                        &lt;/c:choose&gt;
                                                    &lt;/td&gt;
                                                &lt;/tr&gt;
                                            &lt;/c:forEach&gt;

ao marcar um convenio global e desmaracar o outro, ou marcar os dois[ex: marquei bradesco e desmarquei sulamerica] na mao[clicando]
ele associa e desassocia normalmente, faz as alteraçoes no banco e etc

public class AssociaConvenioAction extends AbstractSecureAction {
 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&lt;Convenio&gt; convenios = new HashSet();
        String[] x = mForm.getSelectedConvenios();
        if (x == null) {
        } else {
            for (String s : mForm.getSelectedConvenios()) {
                System.out.println(s);
                Convenio c = (Convenio) hibernateSession.load(Convenio.class, Integer.valueOf(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);

o problema é se eu desmarcar os globais na mao[clicando] eles vem como se tivessem marcados pro AssociaConvenioAction

aqui esta o form

public class EscolherConveniosForm extends ValidatorForm {

    private String acaoMarcaDesmarca = "/marcar-todos.do";
    private String acao;
    private Integer id;
    private String nome;
    private String cnpj;
    private List&lt;Convenio&gt; convenios;
    private String[] selectedConvenios = {};

H.E.L.P!

2 Respostas

S

Amigo,

Se o seu problema é pra submeter o check quando ele estiver desmarcado de uma olhada neste link do struts:

http://struts.apache.org/1.x/struts-taglib/tlddoc/html/checkbox.html

Voce tem q sobrescrever o metodo reset se sertar o valor da propriedade referente o check para o valor q vc quer quando ele estiver desmarcado.

Falou

maxmustang

entao vei
nessa parte do codigo eu imprimo a lista de convenios

for (String s : mForm.getSelectedConvenios()) {
                Convenio c = (Convenio) hibernateSession.load(Convenio.class, Integer.valueOf(s));
                System.out.println(s);
                System.out.println(c.getNome());
                convenios.add(c);
            }

e apenas quando eu desmarco na mao os dois checkbox eles imprimem como se tivessem marcados, eu li sobre o problema e tal
mas como eu faço pra saber quando o cliente desmarcou na mao? E assim dar o reset?

public void reset() {
        this.nome = null;
        this.cnpj = null;
        this.acao = null;
        this.selectedConvenios = new String[]{};
    }

sinceramente to meio perdido

Criado 8 de novembro de 2010
Ultima resposta 9 de nov. de 2010
Respostas 2
Participantes 2