Вам действительно нужно отправить форму без участия пользователя?Вот для чего jsf.ajax.request()
.Кажется, что вы просто хотите загрузить статический контент внутри некоторого <div>
.Просто сделайте следующее
<script>
$(document).ready(function() {
$.get("#{request.contextPath}/myCommunity/ajax/hotTopicDiscussion.faces", function(data) {
$("#discussionTopic").html(data);
});
});
</script>
<h:panelGroup id="discussionTopic" layout="block" />
Или, проще, с jQuery.load()
:
<script>
$(document).ready(function() {
$("#discussionTopic").load("#{request.contextPath}/myCommunity/ajax/hotTopicDiscussion.faces");
});
</script>
<h:panelGroup id="discussionTopic" layout="block" />
В обоих случаях я предполагаю, что hotTopicDiscussion.xhtml
имеет <ui:composition>
в качестве корневого элемента, и что он содержит только необходимый HTML (и, следовательно, не <html>
и т. Д.).
Если вам действительно действительно необходимо отправить форму ajaxical, то самое простоебыло бы позволить JS "нажать" кнопку программно.Он будет делегировать весь путь до правильного и необходимого jsf.ajax.request()
вызова.Вызов jsf.ajax.request()
бесполезен в любом случае без физического компонента формы / кнопки на странице.При необходимости вы можете скрыть форму с помощью CSS.
<script>
$(document).ready(function() {
$("[id='form:button']")[0].onclick();
});
</script>
<h:form id="form" style="display:none;">
<h:commandButton id="button" action="#{bean.submit}">
<f:ajax render=":discussionTopic" />
</h:commandButton>
</h:form>
<h:panelGroup id="discussionTopic" layout="block" />