PrimeFaces は、h:head で以下を条件付きでレンダリングします。
<script type="text/javascript" src="/webapp/javax.faces.resource/push/push.js.jsf?ln=primefaces"><!--//--></script>
PrimeFaces p:socket コンポーネントが JSF/xhtml ページに追加されたとき。一部のページを更新すると、この push.js ファイルが h:head でレンダリングされません。
push.js ファイルがレンダリングされない場合、PrimeFaces Push で発生している問題を修正/回避するために、push.js ファイルを条件付きでレンダリングしたいと思います。
詳細については、以下の PrimeFaces フォーラム トピック URL をクリックしてください。
キャッチされていない TypeError: undefined は関数ではありません
次のような bean 属性値に基づいて h:head を条件付きでレンダリングしているため、この質問をしています。
<h:head rendered="#{!pageNavigationController.gmaps and !pageNavigationController.gmapsAutoComplete}">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="refresh" content="#{session.maxInactiveInterval};url=pf_viewExpired.jsf" />
<title><h:outputText escape="false" value="MCMS"/></title>
<h:outputStylesheet name="css/mcms.css"/>
<h:outputScript name="js/mcms.js"/>
<h:outputScript name="js/addUsingTemplate.js"
rendered="#{pageNavigationController.isPageSelected('/orders/pf_AddUsingTemplate.xhtml')}"/>
</h:head>
おそらく、ページ上の複数の h:head の条件付きレンダリングが原因で、コンテナー TomEE 1.5 SNAPSHOT が .js ファイルを提供するのが困難になっている可能性があります。または、これは実際には PrimeFaces Push (Atmosphere) の問題である可能性があります。最終的には解決する必要がありますが、ファイルが h:head でまだレンダリングされていない場合は、h:outputScript を介して .js ファイルをレンダリングする方法があると確信しています。
Web アプリケーションは以下を使用しています。
PrimeFaces 3.5 スナップショット、TomEE 1.5 スナップショット (Tomcat 7.0.32)、JUEL 2.2.5、OmniFaces 1.3 スナップショット
お知らせ下さい。