Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSF Ajax更新使commandLink在第一次单击时失败_Java_Ajax_Jsf_Jsf 2 - Fatal编程技术网

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

Java JSF Ajax更新使commandLink在第一次单击时失败,java,ajax,jsf,jsf-2,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=

在我的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>
我也尝试过commandButton,但您还需要单击两次按钮


我在Maven/Jetty中运行JSF2.0.1-FCS。

当您将表放在单个。从转向柱上拆下内支架并更换为


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

这个问题很可能是由于这样的原因,即您不能让ajax目标包含从另一个表单更新的表单。该问题被视为规范问题,并被跟踪。如果您喜欢生活在边缘,bug报告有一个变通方法,涉及到对jsf.js的编辑


通过使用ajax和使用execute=控制提交到服务器的内容的能力,我个人认为,除了在一些罕见的情况下(如一些文件上载和对话框实现),每页使用一个表单是一个很好的理由,而且您不会被容易忘记命名容器的错误所困扰,还有像这样的问题。

为什么在f:ajax呈现属性中有:list packages而不是list packages?也许这就是问题所在?可能表没有重新呈现?之所以“:”是因为要呈现的组件在表单之外。表已正确更新/呈现,但需要单击表中的链接两次才能转到页面。