Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring java.lang.IllegalStateException:bean name';新奖励';可用作请求属性_Spring_Spring Mvc - Fatal编程技术网

Spring java.lang.IllegalStateException:bean name';新奖励';可用作请求属性

Spring java.lang.IllegalStateException:bean name';新奖励';可用作请求属性,spring,spring-mvc,Spring,Spring Mvc,我是SpringMVC的新手,跟随《SpringInAction》一书,从头开始创建自己的项目。我在尝试访问“reward.jsp”时遇到以下异常: java.lang.IllegalStateException:bean名称“奖励”的BindingResult和普通目标对象都不能作为请求属性使用 我的课程内容: reward.jsp <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ tagl

我是SpringMVC的新手,跟随《SpringInAction》一书,从头开始创建自己的项目。我在尝试访问“reward.jsp”时遇到以下异常:

java.lang.IllegalStateException:bean名称“奖励”的BindingResult和普通目标对象都不能作为请求属性使用

我的课程内容:

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>

奖励
奖励模块
奖励
奖励名称:
分值:

奖励名单 ${raward.name} ${raward.pointValue}

当我删除表单输入时,它工作得很好

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";
}
}
@控制器
公共类报酬控制器{
@自动连线
私人报酬服务报酬服务;
@请求映射(“/reward”)
公共字符串列表奖励(映射模型){
model.put(“rewardList”,rewardService.listReward());
回报“奖励”;
}
@RequestMapping(value=“/add”,method=RequestMethod.POST)
公共字符串addReward(@ModelAttribute(“奖励”)奖励奖励,
BindingResult(结果){
奖励服务。添加奖励(奖励);
返回“重定向/奖励”;
}
@请求映射(“/delete/{rewardId}”)
公共字符串deleteContact(@PathVariable(“Rewardd”)长Rewardd){
奖赏服务。移除奖赏(奖赏);
返回“重定向/奖励”;
}
}

更改您的
listRewards
方法,以便它将表单支持对象添加到模型映射
model.put(“reward”,new Rewards())

@RequestMapping(“/reward”)
公共字符串列表奖励(映射模型){
model.put(“rewardList”,rewardService.listReward());
model.put(“奖励”,新奖励())
回报“奖励”;
}

在sf:form标记中使用奖励对象之前,需要在模型中绑定一个空的奖励对象。
@RequestMapping("/reward")
public String listRewards(Map<String, Object> model) {
    model.put("rewardList", rewardService.listReward());
    model.put("reward", new Reward())
    return "reward";
}