如何在Embeddable使用Enumerated?

时间:2014-09-03 14:32:51

标签: jsf primefaces selectonemenu embeddable enumerated-types

我有一个包含属性@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>

0 个答案:

没有答案