Olás,
Tenho uma lista de objetos que está sendo mostrada no meu selectOneMenu. Ao tentar salvar meu objeto, ocorre Erro de conversão ao definir o valor ‘’ para 'null. Segue meu código:
XHTML:
<h:outputText value="#{msg.cad_subtema_label_tema}" for="tema" />
<p:selectOneMenu id="tema" value="#{subtemaBean.subtema.tema}" required="true" requiredMessage="Tema: #{msg.aie_campo_obrigatorio}" style="width: 300px;">
<f:converter converterId="temaConverter"/>
<f:selectItem itemValue="" itemLabel="#{msg.aie_opcao_combo_selecione}" />
<f:selectItems value="#{subtemaBean.temasSelect}" var="tema" itemLabel="#{tema.description}" itemValue="#{tema.value}" />
</p:selectOneMenu>
faces-config.xml:
<converter>
<converter-id>temaConverter</converter-id>
<converter-class>br.gov.ibama.aie.web.converter.TemaConverter</converter-class>
</converter>
MB:
@ManagedBean(name = "subtemaBean")
@RequestScoped
public class SubtemaBean {
private Subtema subtema = new Subtema();
private List<SelectItem> temasSelect;
public void salvar() {
FacesContext context = FacesContext.getCurrentInstance();
SubtemaRN subtemaRN = new SubtemaRN();
subtemaRN.salvar(this.subtema);
String texto = MensagemUtil.getMensagem("cad_subtema_info_cadastro", this.subtema);
FacesMessage msg = new FacesMessage(texto);
context.addMessage(null, msg);
}
public void cancelar() {
this.subtema = new Subtema();
}
public List<SelectItem> getTemasSelect() {
if (this.temasSelect == null) {
this.temasSelect = new ArrayList<SelectItem>();
TemaRN temaRN = new TemaRN();
List<Tema> temas = temaRN.listar();
this.montaDadosSelect(this.temasSelect, temas);
}
return temasSelect;
}
public void setTemasSelect(List<SelectItem> temasSelect) {
this.temasSelect = temasSelect;
}
private void montaDadosSelect(List<SelectItem> select, List<Tema> temas) {
SelectItem item = null;
if (temas != null) {
for (Tema tema : temas) {
item = new SelectItem(tema, tema.getDescricao());
select.add(item);
}
}
}
public Subtema getSubtema() {
return subtema;
}
public void setSubtema(Subtema subtema) {
this.subtema = subtema;
}
}