0

我有這個問題,我打電話給API與它工作正常,而它在POST的情況下給空對象。以下是代碼片段。衝刺MVC @ModelAttribute開機自檢不工作

@Controller 
@RequestMapping("/demo") 
public class DemoController { 
@RequestMapping(value = "/create") 
    public ModelAndView createUser(@ModelAttribute User user) { 
    ... 
    ... 
    } 
} 

GET:本地主機:8080 /演示/ create.json名稱=測試&標題=這工作得很好 POST使用表單數據不能正常工作。我得到空物體。

public class User implements Serializable { 
    private String name; 
    private String title; 

    ... 
} 
+0

因此,通過POST請求,正在調用'createUser'方法 - 但'User'對象具有null'name'和'title'? –

+2

你可以顯示錶單嗎? –

回答

1

我會建議下面的代碼。

@RequestMapping(value = "/create", method = RequestMethod.GET) 
public ModelAndView createUser() { 

    ModelAndView modelAndView = new ModelAndView("/createuser.jsp"); 
    modelAndView.addObject("user", new User()); 
    return modelAndView; 
} 

@RequestMapping(value = "/create", method = RequestMethod.POST) 
public ModelAndView createUserProcess(@ModelAttribute("user") User user,) { 
    // save user to db 

} 

只是出於好奇。你不應該用createUser顯示錶單並用createUserProcess處理它嗎?還請確保您的表單有以下內容:

<form:form commandName="user" modelAttribute="user"> 


</form:form> 
+2

你有什麼改變?沒有'method'屬性的'@ RequestMapping'處理所有的HTTP請求類型。 –

+0

我認爲你想顯示一個表單然後處理它。因爲沒有必要,所以我沒有向createUser傳遞任何東西。如果createUser是您的表單處理代碼,則將createUserProcess更改爲createUser。除此之外,您不能使用相同的方法接受GET和POST方法(至少在最後一次檢查時) – tshenolo

+0

由於OP的代碼,他們的'createUser'方法將同時處理POST和GET。您提出的更改不會改變任何問題(實際上我們還不知道)。 –

0

感謝您的好評。我使用郵差來驗證我的控制器。我發現我需要添加多部分解析器。

下面是固定它的線。

<bean id="multipartResolver" 
    class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/> 

謝謝!

+0

你剛剛在哪裏添加了這個?我面臨同樣的問題。 – p0tta