我正在試着學習最新的Spring Boot,並正在處理form submission的一些文檔。我正在看看他們用於GET的控制器的代碼,它提供了包含表單的視圖,並且還處理從POST中捕獲信息。爲什麼GET端點需要Spring Boot中的參數
package hello;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
@Controller
public class GreetingController {
@GetMapping("/greeting")
public String greetingForm(Model model) { // where does 'model' come from?
model.addAttribute("greeting", new Greeting());
return "greeting";
}
@PostMapping("/greeting")
public String greetingSubmit(@ModelAttribute Greeting greeting) {
return "result";
}
}
我不明白的是greetingForm(Model model)
方法如何獲取參數? GET請求肯定不會在請求中發送整個模型,只是URI,對吧?此外,他們沒有列出Model類的代碼,所以我無法檢查。
這是他們的解釋:
的greetingForm()方法使用一個模型對象以露出新的問候語 到視圖模板。以下代碼 中的Greeting對象包含與問候視圖中的 表單域對應的ID和內容等字段,並將用於從表單中捕獲 信息。
我也不明白如何返回字符串「問候」翻譯成一個視圖正在服務。是否有另一個實際調用此方法的圖層?
我來自Play!框架背景,我已經習慣了我的控制器端點必須初始化並將整個模板發送迴響應 - 所以這很混亂。
實際上,您可以檢查所有代碼,只需在控制器中放置一個斷點,然後逐步查看所有[堆棧跟蹤](https://i.stack.imgur.com/ACf26.png)。會給你更多的信息 – varren