1

次のように、JSP で静的メンバー値にアクセスしようとしています。 "@package.subPackage.ClassName@STATIC_MEMBER"

STATIC_MEMBER はpublic static final String値が割り当てられたものとして宣言され、クラスにはパブリック スコープがあります。struts.properties (webapps\appName\WEB-INF\classes フォルダーの下に配置) にstruts.ognl.allowStaticMethodAccess=trueエントリがあります。しかし、Strutsstruts.ognl.allowStaticMethodAccess=trueは struts.properties のエントリを無視するようです。

別のプロジェクトで上記の同じ手順を実行しましたが、完全に正常に機能しています。

注:
1. 完全なパッケージ、クラス、および STATIC_MEMBER 名が正しいかどうかをクロスチェックしました。
2. ページにエラーや例外はありません。
3. 同じ JSP は、Action クラス ( <s:property value="actionMember"/>) からメンバー値にアクセスできます。
4. 他のクラスから static メンバーにアクセスしようとしましたが、うまくいきません。
5. struts.properties ファイルを削除して、struts.xml ファイルの<struts>タグの後に : というエントリを作成しようとしました<constant name="struts.struts.ognl.allowStaticMethodAccess" value="true" />。再起動して再試行しました。しかし、うまくいきません。
6. Web アプリとそのキャッシュ (作業フォルダー) をサーバーから削除した後、サーバーを再構築、再展開、再起動しましたが、機能しませんでした。

環境: Java 1.6、Struts 2.1、Tomcat 6.0 @ Windows XP 2002

助けてください。
よろしくお願いします!

--------------------コードの更新-------------------------------- ---

クラス

package package1.subPackage1;

public class FooClassName {
   public static final int INVALID_LOGIN = 0;   
}


struts.properties
struts.ognl.allowStaticMethodAccess=true

JSP
<s:if test="errorType == @package1.subPackage1.FooClassName@INVALID_LOGIN"> some code here </s:if>


Action クラス:
1. private int errorType;
2. それぞれerrorType

の getter と setter があります。値を出力することすらありません。
<s:property value="@package1.subPackage1.FooClassName@INVALID_LOGIN"/>

4

0 に答える 0