我有一个 CRUD 页面,它在 Primefaces 数据表中显示来自查询(域对象列表)的数据。
<p:dataTable
id="negozi"
var="n"
value="#{nController.theListFromQuery}"
rowKey="#{n.id}"
selection="#{nController.selected}"
selectionMode="single">
<p:column headerText="Field1">
<h:outputText value="#{n.f1}" />
</p:column>
<p:column headerText="Field2">
<h:outputText value="#{n.f2}" />
</p:column>
<p:column style="width:4%">
<p:commandButton
actionListener="#{nController.prepareEdit(n)}"
update=":editDialogId"
oncomplete="editDialog.show()"
value="Edit" />
</p:column>
...
通过单击编辑按钮,将显示一个对话框:
<p:dialog
header="Edit N"
widgetVar="editDialog"
id="editDialogId">
<h:form id="formDialog">
<h:panelGrid id="editDialogTable" columns="2" cellpadding="10" style="margin:0 auto;">
<p:outputLabel for="field1" value="F1:" />
<p:inputText id="field1" value="#{nController.selected.f1}" />
<p:outputLabel for="field2" value="F2:" />
<p:inputText id="field2" value="#{nController.selected.f2}" />
<p:commandButton
value="Confirm"
actionListener="#{nController.doEdit}"
update=":form"
oncomplete="editDialog.hide()"
rendered="#{nController.selected.id!=null}" />
...
有用。现在我想让 F1 成为必填字段。
我将“必需”属性添加到 inputText 字段,会发生什么?
当我尝试在没有必填字段的情况下确认表单时,实体没有被编辑(这是正确的)但对话框已关闭(这是不对的!)
当我重新打开对话框时,我可以在必填(和无效)字段上看到红色突出显示。
如果表单无效,我想要的是防止对话框关闭。
我必须写一些 JS 还是 JSF 会帮助我?