【发布时间】:2015-10-14 20:41:44
【问题描述】:
我有两个下拉列表作为 JSF primefaces p:dataTable 中的表/列过滤器,它们由 ENUMS 填充,当我从第一个中选择值然后我得到验证错误
form:billingTable:methodDropdown: Validation Error: Value is not validform:billingTable:methodDropdown: Validation Error: Value is not valid
我认为问题出在第二个下拉菜单中的空选择,但我没有找到解决方法。
两个枚举都作为 List 而不是作为 EnumType[] 返回
表格显示为 LazyDataModel
我正在使用omnifaces GenericEnumConverter
代码:
1.) 第一个下拉菜单
@Named
public class PaymentMethodsForDropDown {
private ArrayList<PaymentMethod> paymentMethods;
@Produces
@Named(value = "paymentMethods")
@ViewScoped
public ArrayList<PaymentMethod> getPaymentMethods() {
if (paymentMethods == null) {
paymentMethods = new ArrayList<>();
for (PaymentMethod pm : PaymentMethod.values()) {
paymentMethods.add(pm);
}
}
return paymentMethods;
}
}
XHTML
<p:column id="methodColumn" headerText="Method of payment" filterBy="#{bill.method}" sortBy="#{bill.method}" >
<f:facet name="filter">
<h:selectOneMenu id="methodDropdown" onchange="PF('billingTable').filter()" value="#{lazyBillingModel.paymentMethod}" style="width:130px;" converter="omnifaces.GenericEnumConverter" >
<f:selectItem itemLabel="Select One" itemValue="#{null}" noSelectionOption="true" />
<f:selectItems value="#{paymentMethods}" var="var" itemValue="#{var}" itemLabel="#{var.name}" />
</h:selectOneMenu>
</f:facet>
<h:outputText value="#{bill.method.name}" />
</p:column>
2.) 第二个下拉菜单
@Named
public class PaymentStatusDropDown {
private ArrayList<PaymentStatus> paymentStatuses;
@Produces
@Named(value = "paymentStatuses")
@ViewScoped
public ArrayList<PaymentStatus> getPaymentStatus() {
if (paymentStatuses == null) {
paymentStatuses = new ArrayList<>();
for (PaymentStatus ps : PaymentStatus.values()) {
paymentStatuses.add(ps);
}
}
return paymentStatuses;
}
}
<p:column id="statusColumn" headerText="Status of payment" filterBy="#{bill.status}" sortBy="#{bill.status}">
<f:facet name="filter">
<h:selectOneMenu id="statusDropdown" onchange="PF('billingTable').filter()" style="width:100px;" value="#{lazyBillingModel.paymentStatus}" converter="omnifaces.GenericEnumConverter" >
<f:selectItem itemLabel="Select One" itemValue="#{null}" noSelectionOption="true" />
<f:selectItems value="#{paymentStatuses}" var="item" itemValue="#{item}" itemLabel="#{item.name}" />
</h:selectOneMenu>
</f:facet>
<h:outputText value="#{bill.status.name}" />
</p:column>
【问题讨论】:
标签: jsf jsf-2 drop-down-menu primefaces enums