Olá pessoal,
tenho o seguinte form…
<h:form>
<h:panelGrid columns="2">
<h:outputLabel value="Nome:" for="nome"/>
<h:inputText id="nome" value="#{produtoDAO.produto.nome}" required="true" requiredMessage="DIGITE"/>
<h:outputLabel value="Descrição:" for="desc"/>
<h:inputTextarea id="desc" value="#{produtoDAO.produto.descricao}"/>
<h:outputLabel value="Preço:" for="preco"/>
<h:inputText id="preco" value="#{produtoDAO.produto.preco}"/>
<h:selectOneMenu value="#{produtoDAO.produto.secao}" >
<f:selectItems value="#{secaoDAO.secoes}" var="sec" itemValue="#{sec}" itemLabel="#{sec.nome}"/>
<f:converter converterId="SecaoConverter"/>
</h:selectOneMenu>
<h:commandButton action="#{produtoDAO.inserir}" value="add"/>
</h:panelGrid>
</h:form>
…porém quando o método produtoDAO.inserir é chamado o atributo secao (de produto) está nulo; os demais atributos do form estão OK. Imaginei que fosse algo no converter, o código dele segue abaixo… coloquei uns prints para ver se ele estava sendo invocado e deu ok (o objeto sec não estava nulo)…
@FacesConverter(forClass=Secao.class,value="SecaoConverter")
public class SecaoConverter implements Converter{
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
try{
String[] str = value.split("#");
SecaoDAO controller = (SecaoDAO) context.getApplication().getELResolver().getValue(context.getELContext(), null, "secaoDAO");
int id = Integer.parseInt(str[0]);
Secao sec = controller.procurar(id);
System.out.println("Converter - getAsObject [ok]:");
System.out.println(">> "+sec.getId()+" - "+sec.getNome());
return sec;
}catch(Exception ex){
ex.printStackTrace();
}finally{
return null;
}
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
System.out.println("Converter - getAsString [ok]:");
Secao sec = (Secao)value;
String output = sec.getId()+"#"+sec.getNome();
return output;
}
}
Bom, coloquei o get e set para Secao na classe Produto… enfim não sei o que está faltando e porque o objeto secao não está sendo passado do form para o bean.
Fico no aguardo da ajuda de vocês
flw