2013-03-07 21 views
0

我是Spring MVC的新手,遵循「Spring in Action」一書,從頭開始創建我自己的項目。java.lang.IllegalStateException:BindingResult和bean名稱'newReward'的純樸目標對象都不作爲請求屬性

java.lang.IllegalStateException:無論BindingResult也不平原目標對象的bean名字「獎勵」可以作爲請求屬性

內容試圖達到「reward.jsp」當我得到以下異常我的課:

reward.jsp

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="sf"%> 
<html> 
<head> 
<title>Rewards</title> 
</head> 
<body> 
    <h1>Rewards module</h1> 

<h2>Add reward</h2> 
<sf:form action="add" method="post" modelAttribute="reward"> 
    Reward name:<sf:input path="name" /> 
    Point value:<sf:input path="pointValue" /> 
    <input type="submit" value="Add"> 
</sf:form> 


<br /> 
<h2>Reward list</h2> 
<table> 
    <c:forEach var="reward" items="${rewardList}"> 
     <tr> 
      <td>${reward.name}</td> 
      <td>${reward.pointValue}</td> 
      <td><a href="delete/${reward.id}">delete</a></td> 
     </tr> 
    </c:forEach> 
</table> 

當我刪除表單輸入時,它工作得很好。

RewardController.java

@Controller 
public class RewardController { 

@Autowired 
private RewardService rewardService; 

@RequestMapping("/reward") 
public String listRewards(Map<String, Object> model) { 
    model.put("rewardList", rewardService.listReward()); 
    return "reward"; 
} 

@RequestMapping(value = "/add", method = RequestMethod.POST) 
public String addReward(@ModelAttribute("reward") Reward reward, 
     BindingResult result) { 

    rewardService.addReward(reward); 
    return "redirect:/reward"; 
} 

@RequestMapping("/delete/{rewardId}") 
public String deleteContact(@PathVariable("rewardId") long rewardId) { 
    rewardService.removeReward(rewardId); 
    return "redirect:/reward"; 
} 
} 
+0

在sf:form標記中使用它之前,您需要在模型中綁定獎勵對象。 – 2013-03-07 10:13:41

回答

0

更改您的listRewards的方法,所以它的表單支持對象添加到模型圖model.put("reward", new Reward())

@RequestMapping("/reward") 
public String listRewards(Map<String, Object> model) { 
    model.put("rewardList", rewardService.listReward()); 
    model.put("reward", new Reward()) 
    return "reward"; 
} 
相關問題