使用分页数据表和ajax迭代参数



我试图找到解决问题的datatable/ajax(简而言之):

<h:panelGroup layout="block" styleClass="ptl-body" id="toRender">
<h:dataTable value="#{flightMBean.flights}" var="f" id="flight_table" styleClass="table table-striped table-bordered">
    <h:column>
        <f:facet name="header">Airline</f:facet>
        <h:outputText value="#{f.airline.name}"/>
    </h:column>
    ...
    <h:column>
        <f:facet name="header">Status</f:facet>
        <span class="label label-success">Approved </span>
        <sec:authorize ifAnyGranted="ROLE_USER, ROLE_ADMIN">
            <h:form>
                <h:commandButton action="#{userMBean.observeFlight(f.id)}"
                                 styleClass="btn purple" value="Observe">
                    <f:ajax execute="@form" />
                </h:commandButton>
            </h:form>
        </sec:authorize>
    </h:column>
</h:dataTable>

Paginator行动:

<h:form style="margin: 0 0 0 0">
<h:commandButton  styleClass="btn"
                  action="#{flightMBean.previous()}" 
                  rendered="#{flightMBean.paginator.hasPreviousPage}"
                  value="Prev">
    <f:ajax render=":toRender"/>
</h:commandButton>
<h:commandButton styleClass="btn" action="#{flightMBean.next()}" 
                 rendered="#{flightMBean.paginator.hasNextPage}"
                 value="Next">
    <f:ajax render=":toRender"/>
</h:commandButton>

对于datatable的第一个视图页,一切似乎都在工作。当我点击"观察"时,带有良好id的航班进入数据库。当我点击"下一步"按钮时出现问题-数据表呈现新行,但每个id与第一页相同。

例如,在第一页我有航班:从x到y在20:00与id=1另一个与id=2,第二页呈现与第三航班与id=3。如果我想观察第一次或第二次飞行,一切都没问题!如果我想观察第三个,id=1的航班将进入数据库。

p。如果我只输入#{f。没有form/commandButton/jsf组件,一切看起来都很好…/

如果支持bean是请求作用域,并且在(后)构建期间没有完全保留相同的数据模型(<h:dataTable value>背后的对象),则会发生这种情况。

要么将bean放在视图范围内,要么在bean的(post)构造函数中编写逻辑,以保持与将带有表的表单呈现给最终用户时完全相同的数据模型。如果它依赖于一些基于请求的条件,那么您可以使用<f:param>在请求之间保留它们。

参见:

  • commandButton/commandLink/ajax action/listener方法未被调用或输入值未更新-第4点

相关内容

  • 没有找到相关文章

最新更新