У вас действительно необходимо отправить форму аяксиально? Вот где 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>
и прочее).
Если вы действительно действительно необходимо отправить форму ajaxically, то проще всего было бы позволить JS «щелкнуть» кнопку программно. Он будет делегировать весь путь до надлежащего и необходимого вызова jsf.ajax.request()
. A 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" />
Почему отправить запрос на запись 'jspPath + '/ myCommunity/Ajax/hotTopicDiscussion.faces'', прежде чем сделать фактический запрос JSF Ajax? –
Что такое атрибут 'rerendered' в' h: panelGroup'? Это действительно существует? –