ファイルaPage.xhtml
には、次の行があります。
<ui:include rendered="#{not empty param.target}" src="#{param.target}.html" />
<ui:include rendered="#{empty param.target}" src="About.html" />
上記の行で、 に移動するとhttp://localhost:8080/beta/aPage.xhtml
、 が であるため、ページAbout.html
が含まれるparam.target
ことを期待していましたnull
。ただし、GlassFish は次の例外をスローしました。
java.io.FileNotFoundException: http://localhost:8080/beta/.html
どういうわけか、param.target
とは見なされませんでしたnull
。
さらに、次のように==
and演算子を使用しようとしました。!=
<ui:include rendered="#{param.target != null}" src="#{param.target}.html" />
<ui:include rendered="#{param.target == null}" src="About.html" />
興味深いことに、今回、GlassFish のコンソールでは例外がスローされませんでした。ただし、ブラウザーでは、依然としてエラー ページが表示され、例外が表示されますjava.io.FileNotFoundException
。
どうしてこうなったのか、どうすれば回避できるのか教えていただけるとありがたいです。
アップデート:
Joop Eggen からのヒントのおかげで、最終的に次の行で問題を解決しました。
<ui:param name="noTarget" value="About.html" />
<ui:param name="hasTarget" value="#{param.target}.html" />
<ui:include src="#{empty param.target? noTarget : hasTarget}" />
よろしくお願いします