使用CDNResourceHandler的Primefaces

时间:2013-09-30 13:32:23

标签: jsf-2 primefaces glassfish cdn omnifaces

我正在将我的静态文件推送到我的Web应用程序的CND。为此,我使用了OmniFaces CDNResourceHandler,效果很好。除了,我的风格不遵循。

我被映射为:

javax.faces:jsf.js=http://.../jsf.js,
primefaces:primefaces.js=http://.../primefaces.js,
primefaces:jquery/jquery.js=http://.../jquery.js,
primefaces:jquery/jquery-plugins.js=http://.../jquery-plugins.js,
primefaces:idlemonitor/idlemonitor.js=http://.../idlemonitor.js,

primefaces-smoothness:theme.css=http://.../theme.css,
primefaces:primefaces.css=http://.../primefaces.css,
styles:main04.css=http://.../main04.css,

除了我的风格全部关闭外,这个工作正常。渲染结果与未加载theme.css AND primefaces.css的结果相同。

如果我将这些资源移除为CDNResourceHandler处理,则页面会根据需要加载。我可以确认页面上正在加载这些文件(Inspect Element - > resources在网络浏览器中显示这些文件已存在且已加载。

有没有人经历过不通过CDN工作的PrimeFaces风格?有没有办法让这个工作?

我的应用程序运行于:

  • OmniFaces 1.6
  • Primefaces 3.5
  • Majorra 2.2
  • Glassfish 3.1.2.2(也尝试使用Glassfish 4)

编辑1

我已经进一步研究了这个问题,似乎css文件没有进程:CSS中的#{resources[]}内容仍然存在。这可能是由于文件未达到Faces Servlet url-pattern。这让我相信能够实现我想要的东西我需要处理CND资源......?

编辑2

奇怪的是,生成的HTML具有所有已加载的资源。如果通过CDN加载,似乎不处理资源(Primefaces样式)。

这是页面不工作时加载的资源。除了Primefaces提供的基本样式外,一切都很实用。

<link type="text/css" rel="stylesheet" href="http://.../theme.css" />
<link type="text/css" rel="stylesheet" href="http://.../primefaces.css" />
<link type="text/css" rel="stylesheet" href="http://.../main04.css" />
<link type="text/css" rel="stylesheet" href="http://.../main_compact.css" />
<link type="text/css" rel="stylesheet" href="http://.../ironmanCompact.css" />
<script type="text/javascript" src="http://.../jquery.js"></script>
<script type="text/javascript" src="http://.../primefaces.js"></script>
<script type="text/javascript" src="http://.../idlemonitor.js"></script>
<script type="text/javascript" src="http://.../jquery-plugins.js"></script>
<script type="text/javascript" src="http://.../jsf.js"></script>
<script type="text/javascript" src="http://.../jquery.ba-postmessage.js"></script>
<script type="text/javascript" src="http://.../tracker.js"></script>
<script type="text/javascript" src="http://.../socialMedia.js"></script>

通过从CDN中删除Primefaces样式,以下生成的HTML可以完美地工作并生成应该的页面。

<link type="text/css" rel="stylesheet" href="/myapp/javax.faces.resource/theme.css.xhtml?ln=primefaces-smoothness" />
<link type="text/css" rel="stylesheet" href="/myapp/javax.faces.resource/primefaces.css.xhtml?ln=primefaces" />
<link type="text/css" rel="stylesheet" href="http://.../main04.css" />
<link type="text/css" rel="stylesheet" href="http://.../main_compact.css" />
<link type="text/css" rel="stylesheet" href="http://.../ironmanCompact.css" />
<script type="text/javascript" src="http://.../jquery.js"></script>
<script type="text/javascript" src="http://.../primefaces.js"></script>
<script type="text/javascript" src="http://.../idlemonitor.js"></script>
<script type="text/javascript" src="http://.../jquery-plugins.js"></script>
<script type="text/javascript" src="http://.../jsf.js"></script>
<script type="text/javascript" src="http://.../jquery.ba-postmessage.js"></script>
<script type="text/javascript" src="http://.../tracker.js"></script>
<script type="text/javascript" src="http://.../socialMedia.js"></script>

1 个答案:

答案 0 :(得分:0)

只需用经典的CSS查找替换jsf资源查找 当我把我的主题外化时,这只是我想法中的两个大规模替换。

代替:

background:url("#{resource['primefaces:colorpicker/images/colorpicker_select.gif']}");

使用:

background:url("images/colorpicker_select.gif");

或者从这里下载更改的资源和映射:
http://forum.primefaces.org/viewtopic.php?t=38421