【发布时间】:2020-12-02 09:27:25
【问题描述】:
我尝试了所有解决方案,但我不断收到此错误。此外,如果我不在 jsp 文件中使用 form:form 并使用简单的 HTML,我会得到所需的输出。
控制器类
@Controller
public class controller_class {
/*
* @RequestMapping(path = "/index", method = RequestMethod.GET) public
* ModelAndView mar() { return new ModelAndView("index","command",new marks());
* }
*/
@RequestMapping("/index")
public ModelAndView showComments() {
return new ModelAndView("marks","command",new marks());
}
@RequestMapping(value = "/addMarks", method = RequestMethod.POST)
public ModelAndView stud(@ModelAttribute("marks") marks m) {
ModelAndView mv = new ModelAndView("result");
int k = m.calculate();
mv.addObject("tot_marks", k);
return mv;
}
}
index.jsp
<form:form method = "POST" modelAttribute="marks" action = "/springmvc_qa3/addMarks">
<table>
<tr>
<td><form:label path = "sci_marks">Name</form:label></td>
<td><form:input path = "sci_marks" /></td>
</tr>
<tr>
<td><form:label path = "maths_marks">Age</form:label></td>
<td><form:input path = "maths_marks" /></td>
</tr>
<tr>
<td><form:label path = "eng_marks">id</form:label></td>
<td><form:input path = "eng_marks" /></td>
</tr>
<tr>
<td colspan = "2">
<input type = "submit" value = "Submit"/>
</td>
</tr>
</table>
</form:form>
</body>
如果我改用它,则输出正确
<form method="POST" action="/springmvc_qa3/addMarks" >
<table>
<tr>
<td><label >Science Marks</label></td>
<td><input type="text" name="sci_marks" /></td>
</tr>
<tr>
<td><label >Mathematics Marks</label></td>
<td><input type="text" name="maths_marks" /></td>
</tr>
<tr>
<td><label >English Marks</label></td>
<td><input type="text" name="eng_marks" /></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="Submit" />
</td>
</tr>
</table>
</form>
使用第一种方法无法得到正确输出的原因是什么?
【问题讨论】:
-
在您的索引控制器中,您正在以“命令”的名称传递对象“新标记()”。但是在表单中,您使用的是带有名称标记的对象。顺便说一句,请使用公共类 Marks {} 中的首字母大写命名您的类,然后使用 Marks m 声明变量。
-
那么我应该在代码中加入哪些更改?是的,你是对的。我会注意用首字母大写来命名类。
标签: spring eclipse spring-mvc