2010-10-07 58 views
1

我正在使用Struts 2和REST插件的Java Web應用程序。按照慣例,任何以「.xml」結尾的URL都將通過XStreamHandler發送。這很好 - 這是我在大多數情況下想要的。如何重寫Struts 2 REST插件中的XML處理程序

但在少數情況下我想 XML回到瀏覽器。我知道如何設置@Result(type =「stream」)註釋並使其返回InputStream。我已經爲應用程序的其他部分中的圖像完成了此操作。將XML作爲流返回的問題是REST插件發現調用者正在請求XML,因此它試圖反序列化Action類,而不是僅流出InputStream。

如何才能告訴REST插件,只是在這幾個特殊情況下,不要通過XStreamHandler發送XML結果?

謝謝!

回答

1

哦,很酷,我想出了答案。祕密是要返回實現com.opensymphony.xwork2.Result的類的實例。

假設'的getFileName()返回我要流的XML文件的名稱:

@SkipValidation 
public com.opensymphony.xwork2.Result streamFile() throws FileNotFoundException { 
    return new StreamResult(new FileInputStream(new File(getFileName()))); 
}