部分更新后,JSF页面丢失了样式

时间:2014-03-21 14:33:23

标签: jsf jsf-2

我在部分更新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" />

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您可以将渲染的面板组放在<h:form id="toberendred">内并重新渲染此表单而不是h:panelGroup

答案 1 :(得分:0)

为了正确(JSF方式)从远程服务器加载您的css文件,您可以使用Omnifaces CDNResourceHandler


此外,您的代码中存在一些严重问题:

为什么使用@all(修复为小写)和其他(includeContainer)选择器? ,查看来源,看到您无法在视图源中呈现<ui:include,您将看到是和否的内容xhtmls + <h:panelGroup没有属性libraryname ...