Pessoal, vou postar todo o meu código aqui para utilização do listShuttle, não é possível que esse componente foi criada para nada…
Me ajudem a fazer funcionar…
Quero listar um cadastro de empresas… e selecioná-las em um formulário de agrupamento…
Segue abaixo o código JSP:
[code]
<rich:listShuttle id = “lsEmpresas”
converter = “EmpresaConverter”
showButtonLabels = “false”
sourceCaptionLabel = “.::Empresas disponíveis”
sourceListWidth = “245”
targetCaptionLabel = “.::Empresas selecionadas”
targetListWidth = “245”
listsHeight = “250”
sourceValue = “#{MetaVigenciaMB.empresas}”
targetValue = “#{MetaVigenciaMB.empresasSelecionadas}”
var = “empresas” >
<rich:column>
<h:outputText value="#{empresas.id}" />
</rich:column>
<rich:column>
<h:outputText value="#{empresas.descricao}" />
</rich:column>
</rich:listShuttle>
</center>
[/code]
Estou utilizando um conversor para converter id que é do tipo Long para String.
Segue abaixo:
[code]public class EmpresaConverter implements Converter {
@Override
public Object getAsObject(FacesContext facesContext, UIComponent uIComponent, String valorTela) {
// TODO Auto-generated method stub
if (valorTela == null){
return null;
}
EmpresaDAO empresaDAO = new EmpresaDAO();
EmpresaBean empresaBean = empresaDAO.getEmpresa(new Long(valorTela));
return empresaBean;
}
@Override
public String getAsString(FacesContext facesContext, UIComponent uIComponent, Object objetoTela) {
// TODO Auto-generated method stub
if (objetoTela==null){
return null;
}
if (objetoTela instanceof EmpresaBean){
EmpresaBean empresaBean = (EmpresaBean) objetoTela;
return empresaBean.getId().toString();
} else {
throw new IllegalArgumentException("object:" + objetoTela + "of type:" + objetoTela.getClass().getName());
}
}
}[/code]
[code]O método empresaDAO.getEmpresa(Long valor) retorna um objeto do tipo bean, e está como segue:
public EmpresaBean getEmpresa(Long id){
Iterator<EmpresaBean> iterator = this.session.createCriteria(EmpresaBean.class).add(Restrictions.like("id", id)).list().iterator();
EmpresaBean empresaBean = new EmpresaBean();
if (iterator.hasNext()){
empresaBean = iterator.next();
}
this.session.close();
return empresaBean;
}
[/code]
Agora, após fazer tudo isso, de nada resolve… Os erros permanecem os mesmos, toda a requisição ajax na tela aparece o seguinte erro:
[color=red]Component frmMetaVigencia:lsEmpresa has invalid value expression br.com.web.bean.EmpresaBean@1294813"[/color]
Alguém pode me ajudar… estou algum tempo tentando resolver…
Obrigado a todos…
