1

Struts2 で App の名前空間のリストを取得する方法はありますか? 実行時にこれをセットまたはリストにしたい。

Struts2 RestActionMapper プラグインを使用しています。有効なアクションに対して無効な名前空間が指定されている場合、Struts は名前空間エラーをスローします。しかし、このエラーが発生したときに標準エラーページにリダイレクトできませんでした。ほとんどすべてのオプションegglobalエラーマッピングのデフォルト名前空間などを試しました。何も機能しませんでした。アプリで名前空間のリストを取得できれば素晴らしいと思ったので、有効な名前空間のリストに対して無効な名前空間をチェックでき、それに応じて一般的なエラーをスローして、最終的に標準エラー ページが表示される可能性がありました。


プロジェクト内のすべての名前空間のリストを取得する方法を探しています。だから、基本的には、このようなことをしたいと思っています。

validNamespaces = getNamespaces();

if(validNamespaces.contains(namespaceRetrivedFromRestPlugin)) {Sysout("これは有効な名前空間です。")} else {Sysout("無効な名前空間");}

4

1 に答える 1

0

これは可能ですが、スティーブンがほとんど述べているように、これがエラーページにリダイレクトするという問題に対する正しいアプローチであるとは確信していません. しかし、その部分はあなたに任せて、このスペースを使用して名前空間の質問に答えます。

インジェクションが機能するには、このコードが Struts2 で作成されたオブジェクトに含まれている必要があります。

private Configuration configuration;

@Inject
public void setConfiguration(Configuration config) {
    this.configuration = config;
}

protected Set<String> getNamespaces() {
    Set<String> namespaces = Collections.emptySet();
    Map<String, Map<String, ActionConfig>> allActionConfigs = this.configuration.getRuntimeConfiguration().getActionConfigs();
    if (allActionConfigs != null) {
        namespaces = allActionConfigs.keySet();
    }
    return namespaces;
}

設定は から取得することもできますConfigurationManager。また、上記のメソッドを何度も呼び出すのではなく、これらを変数に格納することをお勧めします。たとえば、オブジェクトが の場合、interceptorメソッドからこのメソッドを呼び出してinit()、クラスレベルの変数に格納できます。

于 2012-08-04T22:30:03.307 に答える