ファイル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}" />
よろしくお願いします