16

requestScope.importMeが JSP ファイルへのパスを期待していると仮定すると、

<c:choose>
    <c:when test="${!empty requestScope.importMe && fileExists(requestScope.importMe) }">
    <c:import url="${requestScope.importMe}" />   
    ...
</c:choose>

エラーがスローされないように、ファイルを含める前にファイルが存在するかどうかを確認するにはどうすればよいですか?

JSTL タグを使用したソリューションを希望します。

4

2 に答える 2

22

c:catchタグに入れます。それはあなたのために投げられたものをキャッチExceptionします。

<c:catch var="e">
    <c:import url="${url}" />
</c:catch>
<c:if test="${!empty e}">
    Error: ${e.message}
</c:if>

c:catchただし、私はこのアプローチが気に入らないことを認めなければなりません。フローを制御するために例外を悪用しています。可能であれば、 (および)の助けを借りて、代わりにサーブレットまたはJavaBeanでこのジョブを実行してください。File#exists()ServletContext#getRealPath()

于 2010-04-12T21:23:02.063 に答える
4

@BalusC は非常に賢く、おそらく質問に答えます。

ただし、完全に言えば、標準の JSTL では何も実行できませんが、チェックを実行するために使用できる独自の EL 関数を作成することはできます。明らかに、そのために Java を作成する必要がありますが、JSP 内ではインラインではありません。

J2EE 1.4 チュートリアルには、独自の EL 関数の作成に関するセクションがあります。

于 2010-04-12T21:48:13.560 に答える