我按照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中的其他值仍然存在(例如名称)。那么,为什么不与枚举相关的属性?
答案 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>
它为我工作。