命令按钮操作无效

Ger*_*rep 0 jsf redirect

我有这个数据表:

<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>
Run Code Online (Sandbox Code Playgroud)

我正在显示订单列表,每个列表都有一个"详细信息"按钮,将用户重定向到orderDetail.html内部页面views/fornecedores.

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

我也尝试了这个:<h:commandButton action="views/fornecedores/orderDetail.html" value="Detalhe" styleClass="btn btn-info"/>没有,它一直将我重定向到同一页面,orderSearch.html.

我需要的是调用将接收orderNo参数的方法,并将加载对象并重定向到orderDetail.html页面.

我做错了什么或这种方法的最佳方法是什么?

Bal*_*usC 9

在这种特殊情况下,当您嵌套在HTML中非法的表单时,可能会发生这种情况.当#{orderController}请求作用域并且orderList内容依赖于基于请求的值时,也会发生这种情况,该值导致在处理表单提交时列表不兼容地更改.

因此,请确保您没有将多个<h:form>组件嵌套在一起,并确保它#{orderController}是一个@ViewScopedbean,并且您没有orderList在其getter方法中操作它.

也可以看看:


至于你的具体功能要求,<h:link>使用<f:param><f:viewParam>更合理的方法.它的书签和更多SEO友好.另请参阅JSF 2.0中的通信 - 处理GET请求参数.