h:selectOneMenu在重新加载后,枚举值变为null

时间:2016-02-03 16:27:41

标签: jsf enums

我按照http://example.com/stripe的建议来构建一个h:selectOneMenu,它接受枚举的值。这工作正常,直到我重新加载页面。

如果我重新加载用户可以执行的页面(Strg + R),#{bean.relationship}属性将变为 null 。所有其他属性(如字符串,数字等)保持原样(Bean是@ViewScoped和@ManagedBean)。

以下是JSF的代码:

public enum RelationshipType {
   Family,
   Friend    
}

这里是Enum的代码:

private RelationshipType relationship; // plus getter & setter
private RelationshipType[] relationshipTypes;
private String name; // plus getter & setter

public RelationshipType[] getRelationshipTypes() {
    return RelationshipType.values();
}

这里来自Bean的代码:

{{1}}

枚举是更大实体的一部分。为了便于显示短版本。有什么想法吗?

@Geinmachi:然而,重新加载后,存储在bean中的其他值仍然存在(例如名称)。那么,为什么不与枚举相关的属性?

1 个答案:

答案 0 :(得分:-1)

我使用了数据类型的枚举

<强>枚举

public enum Datatypes {
INT("Int"), FLOAT("Float"), DOUBLE("Double"), STRING("String"), DATE("Date"), DATETIME(
        "DateTime"), BLOB("Blob");

private final String dataType;

private Datatypes(String dataType) {
    this.dataType = dataType;
}

public String getDataType() {
    return this.dataType;
}

@Override
public String toString() {
    return dataType;
}

}

<强>豆

private List<Datatypes> datatypes = Arrays.asList(Datatypes.values());

public List<Datatypes> getDatatypes() {
    return datatypes;
}

public void setDatatypes(List<Datatypes> datatypes) {
    this.datatypes = datatypes;
}

<强> XHTML

 <p:selectOneMenu value="#{bean.dataType}">
 <f:selectItem itemLabel="Select Data type"/>
 <f:selectItems value="#{bean.dataTypes}" />
 </p:selectOneMenu>

它为我工作。