galera estou apanhando aqui para fazer o PickList do PrimeFaces funcionar na minha aplicação, consegui fazer mostrar o componente com as respectivas listas, mas não consigo salvar, quando clico em salvar retorna o seguinte erro,
Erro de conversão ao definir o valor 'EMPRESA TESTE' para 'null Converter'.
segue o meu Converter@FacesConverter(value = "empresaPickListConverter")
public class EmpresaPickListConverter implements Converter {
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
return getObjectFromUIPickListComponent(component, value);
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object object) {
String string;
if (object == null) {
string = "";
} else {
try {
string = String.valueOf(((Empresa) object).getId());
} catch (ClassCastException cce) {
cce.printStackTrace();
throw new ConverterException();
}
}
return string;
}
@SuppressWarnings("unchecked")
private Empresa getObjectFromUIPickListComponent(UIComponent component, String value) {
final DualListModel<Empresa> dualList;
try {
dualList = (DualListModel<Empresa>) ((PickList) component).getValue();
Empresa empresa = getObjectFromList(dualList.getSource(), Integer.valueOf(value));
if (empresa == null) {
empresa = getObjectFromList(dualList.getTarget(), Integer.valueOf(value));
}
return empresa;
} catch (ClassCastException cce) {
cce.printStackTrace();
throw new ConverterException();
} catch (NumberFormatException nfe) {
nfe.printStackTrace();
throw new ConverterException();
}
}
private Empresa getObjectFromList(final List<?> list, final Integer identifier) {
for (final Object object : list) {
final Empresa empresa = (Empresa) object;
if (empresa.getId().equals(identifier)) {
return empresa;
}
}
return null;
}
}
<p:tab title="Empresa">
<p:pickList value="#{usuarioController.listaEmpresas}"
var="empresa" iconOnly="true" effect="drop"
itemLabel="#{empresa.nomeFantasia}" converter="empresaPickListConverter"
itemValue="#{empresa}"
showSourceControls="true" showTargetControls="true">
<f:facet name="sourceCaption">Disponivel</f:facet>
<f:facet name="targetCaption">Selecionadas</f:facet>
</p:pickList>
</p:tab>
E aqui ao licar nesse commandButton dispara esse erro, ele nem chega a chamar o metodo gravarUsuario, depois disso todos os meus objetos ficam travados, eles nao tem os valores alterados.
<p:commandButton id="btnSalvar" value="Salvar" styleClass="btn-texto" image="btn-aceito"
oncomplete="dlgUsuario.hide()"
actionListener="#{usuarioController.gravarUsuario}"
update="tbUsuario,growlMessage" />
O que estou fazendo de errado?