Poderiam me ajudar?
Estou tentando fazer um selectOneMenu dinâmico a nível de estudo mesmo, mas está dando um erro. Seria por que eu não estou inserindo a propriedade sigla no maneged bean? Devo inserir a propriedade sigla dentro do construtor como fiz com a lista? Se sim como faço? Deve inserir uma variável definindo a sigla para cada pais que eu insiro na no arraylist?
O erro que dá no browser:
type Exception report
message
descriptionThe server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: /Pagina.xhtml @20,29 itemValue="#{pais.sigla}": The class ‘java.lang.String’ does not have the property ‘sigla’.
root cause
javax.el.PropertyNotFoundException: /Pagina.xhtml @20,29 itemValue="#{pais.sigla}": The class ‘java.lang.String’ does not have the property ‘sigla’.
note The full stack traces of the exception and its root causes are available in the GlassFish Server Open Source Edition 3.1.2 logs.
Segue o arquivo xhtml:
<h:head>
Componentes_Visuais
</h:head>
<h:body>
<h:form>
<h:selectOneMenu value="#{testeBean.siglaDoPais}">
<f:selectItems value="#{testeBean.paises}" var="pais"
itemValue="#{pais.sigla}" itemLabel="#{pais.nome}" />
</h:selectOneMenu>
</h:form>
</h:body>
segue o Bean:
import java.util.*;
import javax.faces.bean.ManagedBean;
@ManagedBean
public class TesteBean {
private String siglaDoPais;
private List<String> paises = new ArrayList<String>();
public TesteBean() {
paises.add("Argentina");
paises.add("Brasil");
paises.add("United Kingdon");
paises.add("França");
}
public List<String> getPaises() {
return paises;
}
public void setPaises(List<String> paises) {
this.paises = paises;
}
public String getSiglaDoPais() {
return siglaDoPais;
}
public void setSiglaDoPais(String siglaDoPais) {
this.siglaDoPais = siglaDoPais;
}
}
classe Pais:
public class Pais {
private String sigla;
private String nome;
public Pais(String sigla, String nome) {
super();
this.sigla = sigla;
this.nome = nome;
}
public String getSigla() {
return sigla;
}
public void setSigla(String sigla) {
this.sigla = sigla;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}