最近我已將我的應用程序更新到JSF 2.1.7和PrimeFaces 3.4.2。當下面的對話框用於添加新組時,我會在保存新組之前得到一個「名稱大小必須在1到40之間」驗證錯誤。當我點擊選擇器的添加按鈕時會發生這種情況。我知道顯示此消息是因爲驗證失敗。當我將immediate=true
添加到p:commandButton時,不會出現驗證錯誤。我不知道是什麼觸發了驗證。JSF/PrimeFaces對話框中的Javabean驗證錯誤
<h:form id="formg" prependId="false">
<!-- messages -->
<p:growl id="msgsg" showDetail="true" />
<!-- data table -->
<ui:include src="/WEB-INF/flows/groupsTable.xhtml" />
<p:separator />
<!-- bottom tool bar -->
<ui:include src="/WEB-INF/flows/groupsToolBar.xhtml" />
<!-- preview, edit dialog -->
<ui:include src="/WEB-INF/flows/groupsDialog.xhtml" />
</h:form>
<p:dialog id="dialogg" header="#{groupsBean.dialogTitle}"
widgetVar="groupsDialog" dynamic="true" resizable="false" width="800"
height="600" showEffect="fade" hideEffect="fade" modal="true">
<p:ajax event="close" listener="#{groupsBean.refresh}"
immediate="true" update=":formg" global="false" process="@this" />
<p:tabView id="tabPicker">
<p:tab title="General">
<h:panelGrid id="displayg" columns="2">
<h:outputText value="#Group name*:" />
<p:inputText value="#{groupsBean.selectedGroup.name}" size="40"
readonly="#{!groupsBean.updatable}" maxlength="40" />
</h:panelGrid>
</p:tab>
<p:tab title="Members">
<ui:include src="/WEB-INF/custom/picker.xhtml">
... some params passed to picker
</ui:include>
</p:tab>
</p:tabView>
</p:dialog>
拾取器類似於<p:password>
並且它是從兩個p由:dataTable的組件和它們之間的4個按鈕。這些按鈕與h:panelGrid組合在一起。按鈕屬性是相似的。下面是按鈕的示例代碼:
<p:outputPanel autoUpdate="true">
<p:commandButton actionListener="#{eval.evaluateAsMethod(pickerAdd)}"
update="source, target, #{messages}" immediate="true"
disabled="#{pickerSourceDisabled}"
icon="ui-icon ui-icon-arrowthick-1-s" />
</p:outputPanel>
源,目標是兩個DataTable的ID。 pickerAdd作爲參數傳遞,值爲groupsBean.picker.add
。這些表包含FooDomain對象。
public class FooDomain implements Serializable {
...
@NotNull
@Size(min = 1, max = 40)
@Column(name = "NAME")
private String name;
...
}
Dank u veel voor uw hulp。 – Seitaridis
不客氣:) – BalusC