Java JSF2.0文档加载时页面部分呈现

Java JSF2.0文档加载时页面部分呈现,java,jsf-2,Java,Jsf 2,我有一个页面,我只想在整个页面加载后加载其中的一部分。为此,我在页面上使用以下代码: <script type="text/javascript"> alert("In the JS"); $(document).ready( function() { $.post(jspPath+'/myCommunity/ajax/hotTopicDiscussion.faces', function(da

我有一个页面,我只想在整个页面加载后加载其中的一部分。为此,我在页面上使用以下代码:

<script type="text/javascript">
    alert("In the JS");
    $(document).ready(
        function() {
            $.post(jspPath+'/myCommunity/ajax/hotTopicDiscussion.faces', 
                function(data) {
                    jsf.ajax.request(this, 'post', {render: 'discussionTopic'});
                }
            );  
        }
    );
</script>

警报(“在JS中”);
$(文件)。准备好了吗(
函数(){
$.post(jspPath+'/myCommunity/ajax/hotTopicDiscussion.faces',
功能(数据){
request(这是'post',{render:'discussionTopic'});
}
);  
}
);



这个
doRender
是一个bean属性,我在AJAX调用完成后设置它。但这并不是在加载数据。我可以看到ajax方法正在被调用。

您对
jsf.ajax.request的调用似乎不正确。根据
请求的参数
如下所示:

资料来源: 触发此Ajax请求的DOM元素,或用作触发元素的元素的id字符串

活动: 触发此Ajax请求的DOM事件。事件参数是可选的

选项: 可以作为请求参数发送以控制客户端和/或服务器端请求处理的可用选项集

所以第一个元素必须是表单内部的某个元素,或者可能是表单本身。您可以尝试将表单的id或表单元素本身传递给此函数。

您真的需要以同轴方式提交表单吗?这就是
jsf.ajax.request()
的作用。看起来您只是想在一些
中加载一些静态内容。只需按以下步骤操作


$(文档).ready(函数(){
$.get(“#{request.contextPath}/myCommunity/ajax/hotTopicDiscussion.faces”),函数(数据){
$(“#discussionTopic”).html(数据);
});
});
或者,更简单地说,使用:


$(文档).ready(函数(){
$(“#discussionTopic”).load(“#{request.contextPath}/myCommunity/ajax/hotTopicDiscussion.faces”);
});
在这两种情况下,我都假设
hotTopicDiscussion.xhtml
作为根元素,并且它只包含必要的HTML(因此不包含
等等)

如果您确实需要以Ajaxic方式提交表单,那么最简单的方法就是让JS以编程方式“单击”按钮。它将一直委托给适当且需要的
jsf.ajax.request()
调用。如果页面上没有物理表单/按钮组件,
jsf.ajax.request()。如有必要,您可以通过CSS隐藏表单


$(文档).ready(函数(){
$(“[id='form:button']”[0].onclick();
});

为什么要在执行实际的jsf ajax请求之前向
jspPath+'/myCommunity/ajax/hotTopicDiscussion.faces'
发送post请求?在
h:panelGroup
中,什么是
重新提交的
属性?它确实存在吗?嗨,hotTopicDiscussion.xhtml只有hotTopicDiscussion.xhtml有类似以下内容的ajax调用:。这被pageload上的其他页面调用,渲染部分仅在该页面上
<h:panelGroup id="discussionTopic" reRendered="#{discussionBean.doRender}">