-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

1 つのフォームに属するすべての入力/ボタンは、独自の に配置する必要があります<h:form>

つまり、「神」の形を使用しないでください。ダイアログを独自のもの<h:form>にします (別の にネストされていないことを確認してください<h:form>)。

基本的、

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

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

これは複合コンポーネントとは関係がないことに注意してください。SSCCE フレーバーですべてを 1 つのビューにまとめると、まったく同じ問題が発生します (これは、質問を投稿する前に既に行っていることが望ましいです)。

ところで、この<center>要素は 1998 年の HTML 4.01 から廃止されました。HTML をどこで学んだかはわかりませんが、できれば 3 年以上前の最新のリソースを探すことをお勧めします。

于 2013-05-08T13:04:19.927 に答える