2010-01-12 83 views
0

我在我的Spring頁面中使用了Starbox。我想提交用戶評分,以便我可以將其存儲在數據庫中,而不必刷新用戶的頁面。我怎樣纔能有一個接受這個值的Spring控制器,而不必返回一個新的視圖。我不一定需要返回任何更新的html - 如果用戶點擊Starbox,那就是所有需要發生的事情。Spring Ajax控制器 - 接受提交而不刷新頁面

同樣,如果我有一個帶有提交按鈕的表單,並且希望在提交時保存表單值,但不一定會將用戶發送到新頁面,那麼如何讓控制器執行該操作?我還沒有找到一個很棒的Spring AJAX教程 - 任何建議都會很棒。

+0

看到更新的響應 – skaffman 2010-01-12 22:53:34

回答

0

瀏覽器上的AJAX邏輯可以簡單地忽略服務器發回的任何數據,它與響應的內容無關。

但是,如果您確實想確保沒有回覆正文被髮回,那麼您可以做的事情。如果使用帶註釋的控制器,可以通過將HttpServletResponse參數添加到@RequestMapping方法中,讓Spring提示您不希望它生成響應。您不必使用響應,但將其聲明爲參數告訴Spring「我自己處理響應」,並且不會發回任何內容。


編輯: OK,讓你在使用老春季2.0風格的控制器。如果你讀了Controller接口的Javadoc,你會看到它說

@返回一個ModelAndView渲染,或 null如果直接辦理

所以,如果你不想渲染一個視圖,然後從您的控制器返回null,並且不會生成響應主體。

+0

但是當我實現org.springframework.web.servlet.mvc.Controller類時,我必須重寫handleRequest方法,該方法返回一個ModelAndView對象。我該如何構建控制器,以便它不返回新視圖並將用戶發送到其他頁面?在jsp端怎麼樣 - 如何在控制器中設置我需要的值? – 2010-01-12 22:36:03

+0

我不明白「jsp方」是什麼意思,你只是說你*不希望產生一個視圖。 – skaffman 2010-01-12 22:54:05

+0

我的意思是如何實際上從我現有的jsp提交javascript值到控制器。我不想然後將用戶發送到另一個頁面,但我有一個我需要發送的javascript值(評級或其他一些數據)。我是新來的Ajax。我是否使用原型Ajax.Request並在那裏指定我的控制器URL? – 2010-01-12 23:41:16

3

如果你使用註解,也許是更優雅的方式返回沒有觀點申報void -returning控制器法@ResponseStatus(HttpStatus.OK)@ResponseStatus(HttpStatus.NO_CONTENT)註解。

如果您使用Controller類,則可以簡單地從handleRequest返回null

要通過AJAX調用來發布控制器,您可以使用客戶端Javascript庫(如果有)的相應功能,例如,在jQuery中使用post()serialize()