我有一个复合组件供用户确认删除操作。但问题是当用户点击“是”时,程序会尝试在我的表单中验证其他输入字段。我认为直接属性不起作用。如何跳过表单中的其他输入字段?
我的观点;
<h:form>
<p:commandButton id="myButtonId" onclick="deleteDialog.show();" icon="ui-icon-trash" title="Delete"/>
//someinputfields and validators
<bzn:deleteConfirmDialog actionListener="#{addressBookController.deleteParty()}">
</bzn:deleteConfirmDialog>
</h:form>
这是我的复合组件;
<composite:interface>
<composite:attribute name="actionListener"
method-signature="java.lang.String action()" />
</composite:interface>
<composite:implementation>
<p:dialog id="deleteDialogId"
widgetVar="deleteDialog"
resizable="false"
height="100"
width="250"
>
<p:outputPanel>
<center>
<p:commandButton value="Yes" immediate="true"
actionListener="#{cc.attrs.actionListener}"
oncomplete="deleteDialog.hide();"/>
<p:commandButton value="No" oncomplete="deleteDialog.hide();"/>
</center>
</p:outputPanel>
</p:dialog>
</composite:implementation>
答案 0 :(得分:2)
属于一个表单的所有输入/按钮必须放在自己的<h:form>
中。
换句话说,不要使用“上帝”形式。给对话框提供自己的<h:form>
(并确保它没有嵌套在另一个<h:form>
中)。
基本上,
<h:form>
...
</h:form>
<p:dialog>
<h:form>
...
</h:form>
</p:dialog>
请注意,这与复合组件有 nothing 。在SSCCE风格(which you should preferably already have done before posting the question)的一个视图中将所有内容放在一起时,您会遇到完全相同的问题。
顺便说一下,自1998年HTML 4.01以来,<center>
元素已被弃用。我不确定你在哪里学习HTML,但我建议寻找最新的资源,最好不要超过〜3年