我在部分更新jsf 2.0页面时遇到了一些麻烦。 我有几个选项的下拉菜单。根据选择我显示不同的页面。当我第一次加载页面时它显示css和javascript工作正常。当我在下拉菜单中更改另一个选项时,这部分页面已经重新呈现,而不显示css和javascript就不起作用。
这是我使用的页面本身的示例,template.xhtm和bean非常通用,因为我没有包含它。
<ui:composition template="/template.xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:t="http://myfaces.apache.org/tomahawk"
xmlns:h="http://java.sun.com/jsf/html">
<ui:define name="body">
<h:form>
<h:selectOneMenu value="#{bean.answer}">
<f:selectItems value="#{bean.answers}" />
<f:ajax event="change" render="includeContainer @All" />
</h:selectOneMenu>
</h:form>
<h:panelGroup id="includeContainer">
<h:panelGroup library="primefaces" name="jquery/jquery.js"
rendered="#{bean.answer == 'yes'}">
<ui:include src="answer_yes.xhtml"></ui:include>
</h:panelGroup>
<h:panelGroup rendered="#{bean.asnwer == 'no'}">
<ui:include src="answer_no.xhtml"></ui:include>
</h:panelGroup>
</h:panelGroup>
</ui:define>
</ui:composition>
关于模板的一个重要说法,我使用此语句包含css,它位于远程服务器上,我无法下载并将其放在本地,这是公司的政策。
<link href="http://server.com/resources/w3.css" rel="stylesheet" title="w3" type="text/css" />
提前感谢您的帮助。
答案 0 :(得分:0)
您可以将渲染的面板组放在<h:form id="toberendred">
内并重新渲染此表单而不是h:panelGroup
。
答案 1 :(得分:0)
为了正确(JSF方式)从远程服务器加载您的css文件,您可以使用Omnifaces CDNResourceHandler
此外,您的代码中存在一些严重问题:
为什么使用@all
(修复为小写)和其他(includeContainer
)选择器? ,查看来源,看到您无法在视图源中呈现<ui:include
,您将看到是和否的内容xhtmls + <h:panelGroup
没有属性library
和name
...