2012-01-13 70 views
3

我想從Spring-MVC控制器方法轉發我的請求到JSP頁面。從彈簧控制器轉發到jsp文件

我的控制器方法應該處理Ajax請求。通過將請求轉發到JSP文件,我想Ajax請求的響應是JSP文件的(動態)HTML 輸出。

我曾嘗試:

public ModelAndView ajaxResponse(HttpServletRequest request, HttpServletResponse response) { 

    request.setAttribute("command", "hello world"); 

    request.getRequestDispatcher("jspfile").forward(request, response); 
    return null;  
} 

這失敗,我得到「HTTP狀態404」

「jspfiles」在瓷磚配置文件中被定義爲指向的實際JSP文件。當我運行下面的方法:

public String ajaxResponse(HttpServletRequest request, HttpServletResponse response) { 

    request.setAttribute("command", "hello world"); 
    return "jspfile"; 
} 

...我得到的文件作爲我的Ajax響應的內容 - 但該文件JSP標籤不解析) - 因此我的結論是我的地磚的定義是正確的( ???)。

我的JSP文件看起來像這樣:

<%=command%> 

所以我想我的Ajax響應的字符串 「Hello World」。

你能告訴我如何實現我的目的的示例代碼?

具體來說,我需要知道:

  1. 應該是什麼控制器方法返回類型?

  2. 應該是什麼控制器方法實際的返回值(如果它的事項)?

  3. 我應該如何設置在request.getRequestDispatcher(...) JSP文件路徑,以便將認識?

+1

你的第二個控制器看起來是正確的我 - 如果你瀏覽到調用該方法,而不是做它一個Ajax請求的URL會發生什麼? JSP是否正確顯示? – jeff 2012-01-13 19:51:05

回答

3

看一看控制器例子在這裏: http://maestric.com/doc/java/spring/mvc

這是一個有點過時了,但你必須做什麼的概念是相同的。 Spring 3有基於註解的方法來完成這個例子中的很多事情。

+0

你是對的。我實際上並不需要使用'request.getRequestDispatcher(「jspfile」)。forward(request,response);' - 因爲轉發到jsp是由框架自動完成的。 – rapt 2012-01-16 15:45:27