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}">