JSF Ajax更新使commandLink在第一次单击时失败

Ant*_*ony 7 java ajax jsf jsf-2

在我的JSF页面中,我有一个组合框,可以在选择组合框的项目时更新表格.

该表包含带有编辑链接的项目.

问题是当组合框更改表格时,您需要在链接上单击两次才能转到页面.第一次单击只刷新页面.

这是xhtml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets">
    <body>
        <ui:composition template="/template.xhtml">
            <ui:define name="windowTitle">Comment packages</ui:define>
            <ui:define name="content">
                <h3>Select the package to comment.</h3>
                <h:form prependId="false">
                    Section:
                    <h:selectOneMenu id="selectSection" value="#{platformService.currentSection}">
                        <f:ajax render=":list-packages" />
                        <f:selectItems value="#{platformService.releasePlatform.sections}" />
                    </h:selectOneMenu>
                </h:form>
                <p/>
                <h:panelGroup id="list-packages">
                    <h:dataTable id="packageList" var="package" value="#{packageService.packages}" border="1" >
                        <h:column>
                            <f:facet name="header">Package name</f:facet>
                            #{package.name}
                        </h:column>
                        <h:column>
                            <h:form>
                                <h:commandlink action="#{commentService.commentPackage}" value="Comment">
                                    <f:param name="packageName" value="#{package.name}" />
                                </h:commandLink>
                            </h:form>
                        </h:column>
                    </h:dataTable>
                </h:panelGroup>
            </ui:define>
        </ui:composition>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

我也尝试过使用commandButton,但你还需要在按钮上单击两次.

我在Maven/Jetty中运行JSF 2.0.1-FCS.

Bal*_*usC 4

当您将表放入单个<h:form>. <h:form>从柱中取出内部并<h:panelGroup id="list-packages">用 替换<h:form id="list-packages">

我不确定这个问题是如何/为什么引起的(需要更多时间来调查),但它可能与表的状态对于知道选择哪一行很重要这一事实有关。