【问题标题】:CombinedResourceHandler doesnt work with PrimeFaces or PF ExtensionsCombinedResourceHandler 不适用于 PrimeFaces 或 PF 扩展
【发布时间】:2014-05-28 18:59:39
【问题描述】:

我将从一个示例开始,如果我有 2 个这样的面板:

<h:panelGroup id="container">
  <!-- PANEL 1 -->
  <c:if test=#{bean.render1}>
    <ui:include ... />
  </c:if>

<!-- PANEL 2 -->
  <c:if test=#{bean.render2}>
    <ui:include ... />
  </c:if>
</h:panelGroup>

面板 2 有一个“p:fileupload”组件,默认情况下,在加载页面时会显示面板 1,当我更改为面板 2 时,会发送一个 ajax 请求以更新“容器”,但由于以下原因导致异常这段代码:

createWidget : function(widgetConstructor, widgetVar, cfg, resource) { 
  if(PrimeFaces.widget[widgetConstructor]) {
    //...
  } else {
    var scriptURI = $('script[src*="/javax.faces.resource/primefaces.js"]').attr('src').replace('primefaces.js', resource + '/' + resource + '.js'),
        cssURI = $('link[href*="/javax.faces.resource/primefaces.css"]').attr('href').replace('primefaces.css', resource + '/' + resource + '.css'),
        cssResource = '<link type="text/css" rel="stylesheet" href="' + cssURI + '" />';
    //...
  }
}

你怎么能猜到,一些组件(当我使用 c:if 或与 pe:ckEditor 一起使用时)加载额外的库而不使用 @ResourceDependency 注释,在这种情况下我会得到一个异常,因为资源“primefaces.js”不存在,被全脸取代。

有解决这个问题的建议吗?

【问题讨论】:

    标签: primefaces jsf-2.2 omnifaces primefaces-extensions combinedresourcehandler


    【解决方案1】:

    为了解决这个设计问题,有 3 个选项:

    1. 不要使用 ajax 进行导航,而应使用普通(可添加书签且对 SEO 友好)请求。

    2. 不要使用视图构建时间标签进行基于请求的渲染(通过 ajax),而是使用 rendered 属性。

    3. 使用&lt;h:outputScript&gt; 自己明确包含缺少的资源。例如。对于&lt;p:fileUpload&gt;

      <h:outputScript library="primefaces" name="fileupload/fileupload.js" target="head" />
      

    【讨论】:

    • 当我使用渲染时,响应时间很长......这可能是由于 Mojarra 错误吗?
    猜你喜欢
    • 2015-09-12
    • 1970-01-01
    • 2023-04-04
    • 2019-02-26
    • 2015-08-29
    • 1970-01-01
    • 1970-01-01
    • 2012-11-25
    • 2020-04-04
    相关资源
    最近更新 更多