我想创建一个正在处理ajax(所有ajax)的网页。我的意思是..每当你点击一个链接(我指的是< h:outputLink ...>)来改变某个div时,使用来自另一个链接的数据。
例如:
<h:outputLink value="/page.jsf" onclick="myfunction(this); return false;">
My page
</h:outputLink>
page.jsf是一个普通的jsf页面...使用页面layout.xhtml显示如下:
<ui:composition template="/layout.xhtml">
<ui:define name="main">
//my content here
</ui:define>
</ui:composition>
这可能吗? 这是可能的,使用servlet只从特定的jsf中获取片段吗?
我的最后一个解决方案是使用jquery.load函数...
此致
答案 0 :(得分:4)
<h:link>
和<h:outputLink>
不能被ajaxified。所有JSF2 ajax请求都是按照规范POST请求。您需要<h:form>
<h:commandLink>
。
您可以使用以下构造:
<h:form>
<f:ajax render=":include">
<h:commandLink value="Home" action="#{menuManager.setPage('home')}" /><br />
<h:commandLink value="FAQ" action="#{menuManager.setPage('faq')}" /><br />
<h:commandLink value="Contact" action="#{menuManager.setPage('contact')}" /><br />
</f:ajax>
</h:form>
<h:panelGroup id="include">
<ui:include src="#{menuManager.page}.xhtml" />
</h:panelGroup>