2

私はこのdataTableを持っています:

<h:dataTable value="#{orderController.orderList}" var="order"
                                     styleClass="table table-striped">
                            <h:column>
                                <f:facet name="header">#</f:facet>
                                <h:outputText value="#{order.orderNo}" escape="false"/>
                            </h:column>
                            <h:column>
                                <f:facet name="header">Cliente</f:facet>
                                <h:outputText value="#{order.client}" escape="false"/>
                            </h:column>
                            <h:column>
                                <f:facet name="header">Data</f:facet>
                                <h:outputText value="#{order.date}" escape="false"/>
                            </h:column>
                            <h:column>
                                <f:facet name="header">Status</f:facet>
                                <h:outputText value="#{order.status}" escape="false"/>
                            </h:column>
                            <h:column>
                                <f:facet name="header"></f:facet>
                                <h:form>
                                    <h:commandButton action="#{orderController.orderDetail}" value="Detalhe" styleClass="btn btn-info"/>
                                </h:form>
                            </h:column>
</h:dataTable>

注文のリストを表示しています。各リストには、ユーザーをorderDetail.html内のページにリダイレクトする[詳細]ボタンがありますviews/fornecedores

デバッグしましたが、をクリックしてもcommandButtonBean関数が呼び出されていません。[

私もこれを試しました:<h:commandButton action="views/fornecedores/orderDetail.html" value="Detalhe" styleClass="btn btn-info"/>そして何も、それは私を同じページにリダイレクトし続けます、orderSearch.html

私が必要としているのは、orderNoパラメータを受け取り、オブジェクトをロードしてorderDetail.htmlページにリダイレクトするメソッドを呼び出すことです。

私は何を間違っているのですか、それともこのアプローチの最善の方法は何ですか?

4

1 に答える 1

12

この特定のケースでは、HTMLで違法なフォームをネストしているときに発生する可能性があります。これは、#{orderController}がリクエストスコープであり、orderListコンテンツがリクエストベースの値に依存している場合にも発生する可能性があります。これにより、フォームの送信が処理されるときにリストが非互換的に変更されます。

<h:form>したがって、複数のコンポーネントを相互にネストしていないこと、および#{orderController}@ViewScopedBeanでありorderList、getterメソッドでを操作していないことを確認してください。

参照:


具体的な機能要件に関しては、<h:link>with<f:param><f:viewParam>はこれに対するより適切なアプローチです。ブックマーク可能で、SEOにやさしいです。JSF2.0での通信-GET要求パラメータの処理も参照してください。

于 2012-05-03T20:21:41.687 に答える