我有一个包含属性@Embeddable
的{{1}}类。我想在selectOneMenu primefaces中显示此属性@Enumerated
的值。
问题是,当我尝试显示我的页面时,这会返回@Enumerated
为空的异常,而且我不知道如何解决这个问题。
列举的
@Enumerated
嵌入式
public enum EstadosDoBrasil {
AC,
AL,
AM,
AP,
BA,
CE,
DF,
ES,
FN,
GO,
MA,
MG,
MS,
MT,
PA,
PB,
PE,
PI,
PR,
RJ,
RN,
RO,
RR,
RS,
SC,
SE,
SP,
TO;
}
实体域
@Embeddable
public class Endereco {
@NotNull @Size(min=5, message="Informe o endereço")
private String endereco;
@NotNull
private Integer numero;
private String complemento;
@NotNull @Size(min=5, message="Informe a cidade")
private String cidade;
@NotNull @Size(min=3, message="Informe o bairro")
private String bairro;
private String cep;
@Enumerated(EnumType.STRING)
private EstadosDoBrasil uf;
//gets sets
托管Bean
@Entity
@NamedQueries({
@NamedQuery(name=UnidadeEscolar.FIND_ALL, query="SELECT ue FROM UnidadeEscolar ue")
})
public class UnidadeEscolar implements Serializable{
private static final long serialVersionUID = 1L;
public static final String FIND_ALL = "unidadeEscolar.findAll";
@Id @GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
@NotNull @Size(min=5, message="Informe o nome da unidade escolar")
private String nome;
private String departamento;
@Embedded
private Endereco endereco;
public UnidadeEscolar() {
endereco = new Endereco();
}
XHTML
@ManagedBean
@ViewScoped
public class UnidadeEscolarMB {
private UnidadeEscolar bean;
private GenericDAO<UnidadeEscolar> dao;
private List<UnidadeEscolar> unidades = null;
/** insere uma nova unidade escolar */
public void prepareCreate(){
bean = new UnidadeEscolar();
}
/** retorna o objeto */
public UnidadeEscolar getBean() {
return bean;
}
/** define o objeto */
public void setBean(UnidadeEscolar bean) {
this.bean = bean;
}
//enum values
public EstadosDoBrasil[] getUF(){
return EstadosDoBrasil.values();
}
}
异常
<p:outputLabel value="U.F"/>
<p:selectOneMenu value="#{unidadeEscolarMB.bean.endereco.uf}">
<f:selectItems value="#{unidadeEscolarMB.UF}" var="uf"
itemLabel="#{uf}" itemValue="#{uf}"/>
</p:selectOneMenu>