ListShuttle

14 views
Skip to first unread message

Weksley Viana

unread,
Aug 5, 2008, 11:03:10 AM8/5/08
to jav...@googlegroups.com
ListShuttle Richfaces.

Alguem poderia me dizer onde posso pegar o converter que este componente utiliza. Ou pelo menos um exemplo do converter.

Agradeço desde já.


Tiago Augusto Nogueira Coelho

unread,
Aug 5, 2008, 1:53:29 PM8/5/08
to jav...@googlegroups.com
Já existe no grupo falando sobre isso, da uma procurada.

2008/8/5 Weksley Viana <jogado...@gmail.com>

Leonardo Pessoa

unread,
Aug 7, 2008, 3:42:21 PM8/7/08
to javasf: JavaServer Faces International Group
Cara aqui na empresa a gente usa o converter para o ListShuttle dessa
maneira.....
testa ai
qualquer coisa me passa o código que eu tento dar uma olhada aqui

public class FuncaoConverter implements Converter {

private Logger logger;
private FuncaoDao dao;

public FuncaoConverter() {
logger = Logger.getLogger(FuncaoConverter.class);
dao = new FuncaoDao();
}

public Object getAsObject(FacesContext facesContext, UIComponent
uIComponent, String string) {
logger.debug("Convertendo String para Object");

if (string == null) {
return null;
}
logger.debug("String: " + string);

Integer id = new Integer(string);
return dao.findById(id);
}

public String getAsString(FacesContext facesContext, UIComponent
uIComponent, Object object) {
logger.debug("Convertendo Object para String");

if (object == null) {
return null;
}
logger.debug("Object: " + object.toString());

if(object instanceof Funcao) {
Funcao o = (Funcao) object;
return "" + o.getId();
} else {
throw new IllegalArgumentException("object:" + object + "
of type:" + object.getClass().getName() + "; expected type:
br.com.agrotecno.modelo.basico.Funcao");
}
}

}

Rafael Ponte

unread,
Aug 7, 2008, 3:49:53 PM8/7/08
to jav...@googlegroups.com
Se for -realmente- para trazer o componente do banco ao submeter o formulário é melhor utilizar algum converter como o Entity Converter implementado pelo Rogério Araújo, coordenador aqui da grupo.

2008/8/7 Leonardo Pessoa <leonardo...@gmail.com>



--
Rafael Ponte
http://www.rponte.com.br

Weksley Viana

unread,
Aug 7, 2008, 11:35:15 PM8/7/08
to jav...@googlegroups.com
Leonardo ta ai o meu codigo, tenho uma coisa estranha acontecendo, quando clico num item ele esta perdendo o dado, nao seta o item quando clico na linha, tenho que ir pela seta do teclado.

<rich:listShuttle id="lstShEmpresas"
                                fastOrderControlsVisible="false" orderControlsVisible="false"
                                copyControlLabel="Alocar" copyAllControlLabel="Alocar Todos"
                                removeAllControlLabel="Desalocar Todos"
                                removeControlLabel="Desalocar"
                                sourceValue="#{cadastroFuncionario.empresas}"
                                targetValue="#{cadastroFuncionario.empresasDisponiveis}" var="empresa"
                                sourceCaptionLabel="Empresas Disponiveis"
                                targetCaptionLabel="Empresas Alocados"
                                converter="empresaConverter">
                                <rich:column>
                                    <h:outputText value="#{empresa.nome}"></h:outputText>           
                               
                                </rich:column>
                                <rich:column></rich:column>           
                                                   
                            </rich:listShuttle>

Manage Bean

public List<Empresa> getEmpresasDisponiveis() {

        GerenciadorEmpresa gerEmpresa = new GerenciadorEmpresa();
        List<Empresa> todasEmpresas = gerEmpresa.buscaTodos(Empresa.class, "asc",
                "nome");
       
        if (decorador.getObject().getUsuario() != null)
            todasEmpresas.removeAll(decorador.getObject().getUsuario().getEmpresas());

    
        return todasEmpresas;
    }

Converter

public class ListShuttleEmpresa implements javax.faces.convert.Converter {
   
    private EmpresaDAO dao;
   
    public ListShuttleEmpresa() {
        dao = new EmpresaDAO();
    }

    public Object getAsObject(FacesContext facesContext, UIComponent component,
            String string) {


        if (string == null) {
            return null;
        }

        Integer id = new Integer(string);
       
        return dao.buscar(id, Empresa.class);

    }

    public String getAsString(FacesContext facesContext,
            UIComponent uIComponent, Object object) {
        if (object == null) {
            return null;
        }

        if (object instanceof Empresa) {
            Empresa empresa = (Empresa) object;
            return "" + empresa.getId();

        } else {
            throw new IllegalArgumentException("object:" + object + "of type:"
                    + object.getClass().getName());
        }
    }

}


2008/8/7 Leonardo Pessoa <leonardo...@gmail.com>

Gustavo Delgado

unread,
Aug 9, 2008, 4:19:03 PM8/9/08
to jav...@googlegroups.com
Weksley, vc conseguiu corrigir este problema de selecionar os itens no listShuttle?

Percebi uma coisa... isso acontece quando executo requisições ajax na página. Por exemplo, o meu estava dentro de um modalPanel. Quando clico em algo que executa um método via ajax e em seguida abre o modalPanel, dá este erro de não conseguir selecionar. Porém se eu fechar o panel e abrir de novo, o erro não ocorre mais. Então tirei o listShuttle do modalPanel pra testar e funcionou blz.
Tá com cara de bug :(

2008/8/8 Weksley Viana <jogado...@gmail.com>

Weksley Viana

unread,
Aug 9, 2008, 5:25:05 PM8/9/08
to jav...@googlegroups.com
E isso mesmo Gustavo, o problema e dentro do ModalPanel ...


2008/8/9 Gustavo Delgado <gcde...@gmail.com>

Gustavo Delgado

unread,
Aug 9, 2008, 7:35:49 PM8/9/08
to jav...@googlegroups.com
Achei um jeito meio "capeta" pra contornar isso...
Meu listShuttle está no modalPanel e dentro de uma aba (rich:tabPanel). Antes, este tabPanel era renderizado no cliente com switchType="client". Só mudei para switchType="ajax", para que a aba seja renderizada só quando ela for clicada. Assim, antes de exibir o listShuttle, 2 requisições ajax são processadas (uma na hora de abrir o modalPanel, e outra na hora de mudar de aba).
Não faz muito sentido, mas funcionou, heheh
[]s

2008/8/9 Weksley Viana <jogado...@gmail.com>
Reply all
Reply to author
Forward
0 new messages