2012-08-02 19 views
1

Struts2中有什麼方法可以獲取我應用程序中的命名空間列表嗎? 我想要這個在運行時設置或列表。在Struts 2中有什麼方法可以讓我的應用程序中的所有命名空間?

我正在使用Struts2 RestActionMapper插件。 當爲有效操作指定無效的命名空間時,Struts會拋出名稱空間錯誤。 但是,當發生此錯誤時,我無法重定向到標準錯誤頁面。我嘗試幾乎所有的選項eg.global錯誤映射默認命名空間等。沒有工作。所以認爲如果我可以在我的應用程序中獲得命名空間列表會很好,因此我可以檢查無效的命名空間對我的有效命名空間列表,因此我可以拋出一般性錯誤,最終導致我的標準錯誤頁面。


我正在尋找如何獲取我的項目中所有命名空間的列表。 所以基本上我想做這樣的事情。

validNamespaces = getNamespaces();

如果(validNamespaces.contains(namespaceRetrivedFromRestPlugin)){ SYSOUT( 「這是有效的命名空間。」)} 其他 {SYSOUT( 「無效命名空間」);}

+0

這聽起來像你真正想問的是如何自定義RestActionMapper顯示的錯誤頁面? – 2012-08-02 17:44:57

+0

謝謝史蒂文。我正在尋找如何獲得我的項目中所有命名空間的列表。所以基本上我想要這樣做。 – 2012-08-03 06:15:03

+0

我已在-------中添加了一些問題的更多信息請通過它。 – 2012-08-03 06:25:24

回答

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()方法調用此方法,並將其存儲在類級變量中。

+0

謝謝里斯。你的建議對我有用。很棒 – 2012-08-06 07:33:09

+0

@ iamon3如果有效,你有可能接受我的答案嗎?我會很感激! :d – rees 2012-08-06 11:35:06

相關問題