Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.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
Ajax请求重新加载孔体而不是指定的元素_Ajax_Jsf_Jsf 2 - Fatal编程技术网

Ajax请求重新加载孔体而不是指定的元素

Ajax请求重新加载孔体而不是指定的元素,ajax,jsf,jsf-2,Ajax,Jsf,Jsf 2,我的AJAX请求的响应传递了整个内容,因此每个元素/脚本都会被重新加载。我不明白为什么。唯一需要重新加载的部分是内容 我使用的是JSF2.3和Wildfly17 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transition

我的AJAX请求的响应传递了整个内容,因此每个元素/脚本都会被重新加载。我不明白为什么。唯一需要重新加载的部分是内容
我使用的是JSF2.3Wildfly17

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:f="http://java.sun.com/jsf/core"
>

<h:head>

</h:head>

<h:body>
        <h:form>
            <f:ajax render="content">
            <h:commandLink value="#{msg['menu.1']}" action="#{page1.getLink()}"/>
            <h:commandLink value="#{msg['menu.2']}" action="#{page2.getLink()}"/>
            <h:commandLink value="#{msg['menu.3']}" action="#{page3.getLink()}"/>
            </f:ajax>
            <h:commandLink value="#{msg['menu.logout']}" action="#{homeBean.logOut()}"/>
        </h:form>



            <ui:insert id="content" name="content" >
                <!--<ui:include src="/template/common/commonContent.xhtml" />-->
            </ui:insert>



</h:body>
</html>

请求主体

j_idt4=j_idt4&javax.faces.ViewState=2371578821549273726%3A500402066268747694&javax.faces.source=j_idt4%3Aj_idt6&javax.faces.partial.event=click&javax.faces.partial.execute=j_idt4%3Aj_idt6%20j_idt4%3Aj_idt6&javax.faces.partial.render=content&javax.faces.behavior.event=action&javax.faces.partial.ajax=true

问题是commandLinks的操作返回了一个值,这覆盖了ajax的预期行为。解决方案是使用url设置页面变量:

<h:form>
            <f:ajax render="content">
            <h:commandLink value="#{msg['menu.1']}" action="#{sessionData.setPage('/user/1.xhtml')}"/>
            <h:commandLink value="#{msg['menu.2']}" action="#{sessionData.setPage('/user/2.xhtml')}"/>
            <h:commandLink value="#{msg['menu.3']}" action="#{sessionData.setPage('/user/3.xhtml')}"/>
            </f:ajax>
            <h:commandLink value="#{msg['menu.logout']}" action="#{homeBean.logOut()}"/>
</h:form>

然后使用此变量加载页面:

<h:panelGroup layout="block" id="content">
        <ui:include src="#{sessionData.page}" />
</h:panelGroup>

我还将我的
替换为
,因为JSF无法找到它,并且没有呈现更改

另请参见


问题在于commandLinks的操作返回了一个值,这覆盖了ajax的预期行为。解决方案是使用url设置页面变量:

<h:form>
            <f:ajax render="content">
            <h:commandLink value="#{msg['menu.1']}" action="#{sessionData.setPage('/user/1.xhtml')}"/>
            <h:commandLink value="#{msg['menu.2']}" action="#{sessionData.setPage('/user/2.xhtml')}"/>
            <h:commandLink value="#{msg['menu.3']}" action="#{sessionData.setPage('/user/3.xhtml')}"/>
            </f:ajax>
            <h:commandLink value="#{msg['menu.logout']}" action="#{homeBean.logOut()}"/>
</h:form>

然后使用此变量加载页面:

<h:panelGroup layout="block" id="content">
        <ui:include src="#{sessionData.page}" />
</h:panelGroup>

我还将我的
替换为
,因为JSF无法找到它,并且没有呈现更改

另请参见


删除页眉、内容和页脚div是否有效?输出脚本呢?还有定时器和css?只需使用普通xhtml中的按钮,而无需任何其他操作?加载新内容是可行的,但看起来似乎比加载新内容更有效。其他元素看起来/感觉像是被重置了。Kukeltje要求您删除与重现问题无关的所有代码片段,从而将问题简化为一个问题。通过这样做,你很有可能自己发现问题所在。如果没有,你可以帮助别人,帮助他们尝试。顺便说一句。ajax似乎只执行
内容
。它不会执行单击的命令链接及其操作。
查看以确认整个视图要更新的症状。但是发送到服务器的请求说明了什么呢?如果删除页眉、内容和页脚div,那么它会起作用吗?输出脚本呢?还有定时器和css?只需使用普通xhtml中的按钮,而无需任何其他操作?加载新内容是可行的,但看起来似乎比加载新内容更有效。其他元素看起来/感觉像是被重置了。Kukeltje要求您删除与重现问题无关的所有代码片段,从而将问题简化为一个问题。通过这样做,你很有可能自己发现问题所在。如果没有,你可以帮助别人,帮助他们尝试。顺便说一句。ajax似乎只执行
内容
。它不会执行单击的命令链接及其操作。
查看以确认整个视图要更新的症状。但是发送到服务器的请求说明了什么?