2

次のコードでjspファイルを動的にインクルードしようとしています:

<%@include file="menus/top/${user.roleId}.jsp" %>

ここで、変数user.roleIdintstruts2 アクションで設定されている です。以下で表示できました。

<s:property value="user.roleId" />

現在ログインしているユーザーのroleIdに応じて、ファイルなどを動的に含めmenus/top/1.jspたいと思います。menus/top/2.jspしかし、include タグを使用すると、次の例外が発生します。

Exception Name: org.apache.jasper.JasperException: File "menus/top/${user.roleId}.jsp" not found 

私は何を間違っていますか?

4

3 に答える 3

3

<%@include %>静的インクルード ディレクティブです。したがって、JSP がクラスにコンパイルされるコンパイル時に使用されます。これは、このディレクティブ内でランタイム変数を使用できないことを意味します。

<jsp:include>実行時に動的にリソースを含むを探しています。詳細については、このチュートリアルをお読みください。

于 2013-10-26T09:17:20.307 に答える
2
<%@include file="menus/top/${user.roleId}.jsp" %>

代わりにstruts2 include タグを使用してください

<s:include file="menus/top/%{user.roleId}.jsp"/>

ドキュメントには、 include ディレクティブが処理されていないため、ランタイム評価が必要な式を含めることができないことが明確に記載されています。

于 2013-10-29T13:52:39.010 に答える
1

<c:import>タグを使用します。JSTL の動的インクルードに使用されるため。

ここでc:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
于 2013-10-26T09:19:26.033 に答える