-1

我有一个复合组件供用户确认删除操作。但问题是当用户单击“是”时,程序会尝试在我的表单中验证其他输入字段。我认为立即属性不起作用。如何跳过表单中的其他输入字段?

我的观点;

<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>
4

1 回答 1

2

属于一种形式的所有输入/按钮必须放在它自己的<h:form>.

换句话说,不要使用“上帝”形式。给对话框自己的<h:form>(并确保它没有嵌套在另一个对话框中<h:form>)。

基本上,

<h:form>
    ...
</h:form>

<p:dialog>
    <h:form>
        ...
    </h:form>
</p:dialog>

请注意,这与复合组件无关。在以 SSCCE 风格将所有内容放在一个视图中时,您会遇到完全相同的问题(您最好在发布问题之前已经完成)。

顺便说一句,<center>自 1998 年的 HTML 4.01 以来,该元素已被弃用。我不确定您在哪里学习 HTML,但我建议您寻找最新的资源,最好不要超过 3 年。

于 2013-05-08T13:04:19.927 回答