2

我有这个数据表:

<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

我已经调试过,当我点击 时commandButton,它没有调用我的 bean 函数。[

我也试过这个:<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>组件相互嵌套,并确保 the#{orderController}是一个@ViewScopedbean 并且您没有orderList在其 getter 方法中操作。

也可以看看:


至于您的具体功能要求,<h:link>with<f:param><f:viewParam>是一种更理智的方法。它是可收藏的,对 SEO 更友好。另请参阅JSF 2.0 中的通信 - 处理 GET 请求参数

于 2012-05-03T20:21:41.687 回答