相关疑难解决方法(0)

什么是JSF资源库以及如何使用它?

在JSF <h:outputStylesheet>,<h:outputScript><h:graphicImage>组件具有library属性.这是什么以及如何使用它?Web上有很多示例,它们使用如下公共内容/文件类型css,js以及img(或image)作为库名称,具体取决于所使用的标记:

<h:outputStylesheet library="css" name="style.css" />
<h:outputScript library="js" name="script.js" />
<h:graphicImage library="img" name="logo.png" />
Run Code Online (Sandbox Code Playgroud)

它有用吗?library这些示例中的值似乎只是重复标记名称已经表示的内容.对于<h:outputStylesheet>它来说,基于标签名称已经很明显它代表了一个"CSS库".与以下内容有什么不同,它们的工作方式相同?

<h:outputStylesheet name="css/style.css" />
<h:outputScript name="js/script.js" />
<h:graphicImage name="img/logo.png" />
Run Code Online (Sandbox Code Playgroud)

此外,生成的HTML输出有点不同.给定URL模式的上下文路径/contextnameFacesServlet映射*.xhtml,前者生成以下HTML,其库名称为请求参数:

<link rel="stylesheet" type="text/css" href="/contextname/javax.faces.resource/style.css.xhtml?ln=css" />
<script type="text/javascript" src="/contextname/javax.faces.resource/script.js.xhtml?ln=js"></script>
<img src="/contextname/javax.faces.resource/logo.png.xhtml?ln=img" alt="" />
Run Code Online (Sandbox Code Playgroud)

而后者在URI的路径中生成以下带有库名的HTML:

<link rel="stylesheet" type="text/css" href="/contextname/javax.faces.resource/css/style.css.xhtml" />
<script type="text/javascript" src="/contextname/javax.faces.resource/js/script.js.xhtml"></script>
<img src="/contextname/javax.faces.resource/img/logo.png.xhtml" alt="" />
Run Code Online (Sandbox Code Playgroud)

后一种方法在事后看来也比前一种方法更有意义.该library属性究竟有用吗?

resources jsf jsf-2

224
推荐指数
1
解决办法
12万
查看次数

javax.faces.PROJECT_STAGE的使用

我想了解'javax.faces.PROJECT_STAGE'属性对JSF应用程序的影响.下面的链接中提供了一个很好的用例

http://css.dzone.com/news/jsf-20-new-feature-preview-ser
http://www.java-tutorial.ch/java-server-faces/jsf-project-stage

除了提供验证错误消息之外,还有其他用例,这个属性真的有用吗?我知道我们可以检查这个变量来识别环境并改变某些功能,但是JSF会自动帮助开发人员吗?如果您可以分享项目的经验,那会很棒吗?

model-view-controller jsf jsf-2 jsf-1.2 web

15
推荐指数
2
解决办法
3万
查看次数

如何在JSF2中指定资源库版本?

假设我resources/在webroot中有一个文件夹。在其中,我有一个css/文件夹,在其中有一个theme.css文件。

但是我想设置一个Expires:标题。因此,我想对资源库使用一个版本,例如

<h:outputStylesheet library="css" name="theme.css"/>
Run Code Online (Sandbox Code Playgroud)

会变成

<link rel="stylesheet" src="javax.faces.resources/theme.css.xhtml?ln=css"/>
Run Code Online (Sandbox Code Playgroud)

但我想指定类似

<h:outputStylesheet library="css" name="theme.css" version="1.2"/>
Run Code Online (Sandbox Code Playgroud)

并得到

<link rel="stylesheet" src="javax.faces.resources/theme.css.xhtml?ln=css&v=1_2"/>
Run Code Online (Sandbox Code Playgroud)

或类似。我已经了解到JSF2支持资源版本控制,但是如何指定要加载的版本以及将文件放在何处

jsf myfaces jsf-2 mojarra

5
推荐指数
1
解决办法
2666
查看次数

如何在JSF2中禁用静态资产(如.css和.js)的缓存?

我正在尝试设置一个不缓存静态资产.css和.js的项目.我们似乎对某些人有一些内部缓存问题,我希望这可以解决它.

我有一个阶段监听器,基本上是这个http://turbomanage.wordpress.com/2006/08/08/disable-browser-caching-in-jsf/的略微修改版本

我的课:

package com.ods.common.jsf.phaselistener;

import javax.faces.context.FacesContext;
import javax.faces.event.PhaseEvent;
import javax.faces.event.PhaseId;
import javax.faces.event.PhaseListener;
import javax.servlet.http.HttpServletResponse;

public class CacheControlPhaseListener implements PhaseListener
{
public PhaseId getPhaseId()
{
    return PhaseId.RENDER_RESPONSE;
}

public void afterPhase(PhaseEvent event)
{
}

public void beforePhase(PhaseEvent event)
{
    FacesContext facesContext = event.getFacesContext();
    HttpServletResponse response = (HttpServletResponse) facesContext
            .getExternalContext().getResponse();
    response.setHeader("Cache-control", "no-cache"); // HTTP 1.1
    response.setHeader("Cache-control", "no-store"); // HTTP 1.1
    response.setHeader("Cache-control", "must-revalidate"); // HTTP 1.1
    // response.setHeader("Pragma","no-cache"); //HTTP 1.0
    response.setHeader("Allow", "GET"); // Allowing GET Method only
    response.setHeader("Allow", "POST");// Allowing …
Run Code Online (Sandbox Code Playgroud)

javascript css websphere jsf browser-cache

4
推荐指数
1
解决办法
8366
查看次数