これはこれに関する最初の質問ではないことは承知していますが、問題を解決する答えが見つかりませんでした。
私のプロジェクトでは、PrimeFaces 3.5 を使用しており、IBM WebSphere AS 7 で実行しています。
問題を説明するための非常に簡単なページを作成しました。SO コミュニティが解決に役立つことを願っています :)
だから、ここにページがあります:
<?xml version="1.0" encoding="UTF-8"?>
<!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:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:p="http://primefaces.org/ui">
<h:head></h:head>
<h:body>
<p:panel>
<c:if test="#{true}">
<h:outputText value="WORKS!!!" />
</c:if>
</p:panel>
</h:body>
</html>
このページは、次の HTML を生成します。
<?xml version="1.0" encoding="UTF-8"?>
<!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">
<head>
<link type="text/css" rel="stylesheet" href="/APP/javax.faces.resource/theme.css.xhtml?ln=primefaces-bluesky" />
<link type="text/css" rel="stylesheet" href="/APP/javax.faces.resource/primefaces.css.xhtml?ln=primefaces" />
<script type="text/javascript" src="/APP/javax.faces.resource/jquery/jquery.js.xhtml?ln=primefaces"></script>
<script type="text/javascript" src="/APP/javax.faces.resource/primefaces.js.xhtml?ln=primefaces"></script>
</head>
<body>
<div id="j_idt6" class="ui-panel ui-widget ui-widget-content ui-corner-all">
<div id="j_idt6_content" class="ui-panel-content ui-widget-content">
WORKS!!!
</div>
</div>
<script id="j_idt6_s" type="text/javascript">PrimeFaces.cw('Panel','widget_j_idt6',{id:'j_idt6'});</script>
</body>
</html>
そして、私はわずかに変更されたページを持っています:
<?xml version="1.0" encoding="UTF-8"?>
<!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:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:p="http://primefaces.org/ui">
<h:head></h:head>
<h:body>
<p:panel>
<c:if test="#{bean != null}">
<h:outputText value="WORKS!!!" />
</c:if>
</p:panel>
</h:body>
</html>
次の HTML が生成されます。
<?xml version="1.0" encoding="UTF-8"?>
<!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">
<head>
<link type="text/css" rel="stylesheet" href="/APP/javax.faces.resource/theme.css.xhtml?ln=primefaces-bluesky" />
</head>
<body>
<div id="j_idt6" class="ui-panel ui-widget ui-widget-content ui-corner-all">
<div id="j_idt6_content" class="ui-panel-content ui-widget-content">
WORKS!!!
</div>
</div>
<script id="j_idt6_s" type="text/javascript">PrimeFaces.cw('Panel','widget_j_idt6',{id:'j_idt6'});</script>
</body>
</html>
2 つのページはIDENTICALLYでレンダリングされているはずですが、異なっています。違いは、後者のページprimefaces.css
とjQuery
関連ライブラリが欠落していることですが、それらをロードする必要があります。これにより、より複雑なページが失敗します。しかし、これはページに初めてアクセスしたときにのみ発生します。ブラウザーの更新ボタンをクリックすると、すべてが正しい方法で生成されます。
なぜこれが起こるのかよくわかりません。私の理解によると、JSTL
タグは の前に処理されていますJSF
。JSP
通常のページのように考えることができますが、HTML
後でJSF
ハンドラに渡される非レイアウトがあります。したがって、これはロードされるリソースに影響を与えるべきではありません。
<h:outputStylesheet>
andを使用して出力リンクを強制できることはわかっていますが<h:outputScript>
、そのままで動作することを期待しています。
何か案は?