2013-10-23 95 views
2

是否有可能返回一個String類型的單個值,而不是轉發到struts 1.x中的操作。在struts 1.x中返回文本/純文本

我有幾個類似的問題herehere

在支柱文檔他們提到,

兩者的Struts 1和Struts 2可以返回任何類型的響應。

但他們爲支柱2.

解釋所有討論

任何人可以幫助我,我如何能在struts1.x嗎?

更新: 保羅·巴爾加斯建議解決了我的問題。

回答

5

既然你有一個javax.servlet.http.HttpServletResponse的實例,你可以直接寫文本。例如:

public class HelloWorldAction extends Action { 

    public ActionForward execute(ActionMapping mapping, ActionForm form, 
      HttpServletRequest request, HttpServletResponse response) 
      throws Exception { 

     response.setContentType("text/plain"); 
     response.setCharacterEncoding("UTF-8"); 
     PrintWriter out = response.getWriter(); 
     out.print("We are send text plain"); 

     return null; 
    } 

} 

通過這種方式,您可以發送JSON,XML或二進制文件。

如果要結合傳統請求和Ajax(例如,具有jQuery.ajax),可能是要檢查發送一個完整的HTML頁面或一個片段,JSON,等等,有:

private final boolean isAjaxRequest(final HttpServletRequest request) { 
    final String header = request.getHeader("X-Requested-With"); 
    return header != null && header.equalsIgnoreCase("XMLHttpRequest"); 
}