相关疑难解决方法(0)

将JSF前缀更改为后缀映射会强制我重新应用CSS背景图像上的映射

我多年来一直在使用前缀映射,并决定切换到后缀映射,只是为了/faces真正摆脱url.在我挖洞之前,我只是想检查一下我是否朝着正确的方向前进,因为有一些意想不到的事情正在发生.我改变了这个:

<servlet-mapping>
    <servlet-name>FacesServlet</servlet-name>
    <url-pattern>/faces/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

对此:

<servlet-mapping>
    <servlet-name>FacesServlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

然后我看到所有内容FacesServlet.xhtml 附加到它上面,因此浏览器正在请求background.png.xhtml文件, style.css.xhtml文件 - 这是正确的吗?我认为它被称为后缀映射,但它看起来有些凌乱,我试图说服自己这是要走的路.

在我引用URI的CSS文件中,我还必须附加.xhtml:

background-image: url(images/background.png.xhtml);
Run Code Online (Sandbox Code Playgroud)

然后我看到BalusC的一篇帖子提供了一个解决方案,可以防止资源下载而无需通过FacesServlet:

<security-constraint>
    <display-name>Restrict raw XHTML docs</display-name>
    <web-resource-collection>
        <web-resource-name>XHTML</web-resource-name>
        <url-pattern>*.xhtml</url-pattern>
    </web-resource-collection>
    <auth-constraint/>
</security-constraint>
Run Code Online (Sandbox Code Playgroud)

当我添加这个时,只有真实.xhtml文件加载到页面上,所有其他资源(尽管已经.xhtml附加)不显示.

我想知道的是:

  1. 这是否适用.xhtml于一切正常(对不起,如果这几年最愚蠢的问题)

  2. 为什么'限制原始xhtml文档'安全约束会阻止加载CSS,JavaScript和图像等资源?

感谢您的任何反馈.我在Glassfish 3.1上使用Mojarra 2.1.2.

css jsf facelets jsf-2

14
推荐指数
1
解决办法
7234
查看次数

带有CDN的JSF 2资源?

据我所知,JSF 2资源的需求是帮助组织资源目录,并添加一些版本控制和本地化.

但是可以将此功能与CDN结合使用吗?我之前从未使用过CDN,但它看起来不错,并希望听到您对它的想法以及与JSF 2资源的可能组合,尽管我认为不太可能.

jsf-2

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

无法在JSF中加载CSS图像

描述: 在我的JSF应用程序中,我通过CSS属性设置菜单背景图像.

我按如下方式配置了文件结构

  • 这是我的CSS代码

style.css文件

  #menu 
  {
   height:35px;
   width:950px;
   background:url(images/default.gif);
   /*background:url(#{resource['images:default.gif']}); 
   background:url(#{resource['images/default.gif']});
   */
  }
Run Code Online (Sandbox Code Playgroud)

这个CSS文件在/resources/css目录下,我正在使用Facelets页面导入css文件

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

导入CSS文件没有问题

问题描述

  • 我在*.xhtml上映射了FacesServlet:

     <servlet-mapping>
     <servlet-name>Faces Servlet</servlet-name>
     <url-pattern>*.xhtml</url-pattern>
     </servlet-mapping>
    
    Run Code Online (Sandbox Code Playgroud)

    如果我运行主页,则不会加载在css中配置的菜单图像

  • 当我删除 图像FacesServlet上的映射配置*.xhtml是完全加载

我试过了

我在css文件中尝试了以下方法来加载图像

  1. background:url(images/default.gif);
  2. background:url(#{resource['images:default.gif']});
  3. background:url(#{resource['images/default.gif']});

但我还没找到解决方案.

更新方案

  • 添加了资源处理程序 faces-config.xml

    <application><resource-handler>org.omnifaces.resourcehandler.UnmappedResourceHandler</resource-handler> </application>

  • FacesServlet 配置 web.xml

    <servlet-mapping>
      <servlet-name>Faces Servlet</servlet-name>
      <url-pattern>*.xhtml</url-pattern>
      <url-pattern>/javax.faces.resource/*</url-pattern>
    </servlet-mapping>
    
    Run Code Online (Sandbox Code Playgroud)
  • 将图像放在/resources/images目录下

  • css文件中的图像访问格式

    #menu {background: url(images/bg.png) }

css jsf jsf-2

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

更改资源URL的/javax.faces.resource前缀

我用的时候

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

要么

<h:graphicImage library="images" name="image.jpg">
Run Code Online (Sandbox Code Playgroud)

然后在HTML中我得到这样的东西

<link type="text/css" rel="stylesheet" href="/appName/javax.faces.resource/styles.css.xhtml?ln=css" />
Run Code Online (Sandbox Code Playgroud)

因此用户可以看到用于编写此应用程序的框架.如何避免javax.faces.resource/styles.css.xhtml?ln=css向用户显示,但仍然使用facelets(不是html,如<link rel=...>)?当用户只是看到css文件的路径时,它会很好resources/css/styles.css

jsf-2

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

链接JSF组件的CSS中的图像

我实现了一个jsf 2.0组件,它应该显示jQuery的Datepicker.它工作正常,但找不到css中引用的图像.找到了*.js和*.css,但没有找到图像的链接.

这是我的组件的代码

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
        xmlns:h="http://java.sun.com/jsf/html"
        xmlns:c="http://java.sun.com/jsp/jstl/core"
        xmlns:cc="http://java.sun.com/jsf/composite">
<head>
    <title>jQuery - Datepicker</title>

</head>
<body>
<cc:interface>
    <cc:editableValueHolder name="input"/>
</cc:interface>

<cc:implementation>
    <h:outputStylesheet library="stats" name="jquery/css/jquery-ui-1.8.16.custom.css" />
    <h:outputScript library="stats" name="jquery/js/jquery-1.7.1.min.js" target="head"/>
    <h:outputScript library="stats" name="jquery/js/jquery-ui-1.8.17.custom.min.js" target="head"/>


    <script type="text/javascript">
    var jq = jQuery.noConflict();
    jq(document).ready(function() {
        jq("[id$=#{cc.clientId}]").datepicker({
            showOn : 'focus',
            duration : 10,
            changeMonth : true,
            changeYear : true,
            dayNamesMin : ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],
            currentText : 'Heute',
            dateFormat : 'dd-mm-yy',
            yearRange …
Run Code Online (Sandbox Code Playgroud)

css java jquery jsf-2

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

标签 统计

jsf-2 ×5

css ×3

jsf ×2

facelets ×1

java ×1

jquery ×1