Java Spring MVC 3.0处理数据
我正在学习SpringMVC3,我想这是一个简单的问题。我有一个视图计算器,它在一个表单中接受2个整数。这些都传给了我的表格pojo。我的控制器添加并打印到Catlina.out日志。我想传递我的整数和;回到视图,我怎样才能做到这一点 这里是初步的看法Java Spring MVC 3.0处理数据,java,spring-mvc,spring-3,Java,Spring Mvc,Spring 3,我正在学习SpringMVC3,我想这是一个简单的问题。我有一个视图计算器,它在一个表单中接受2个整数。这些都传给了我的表格pojo。我的控制器添加并打印到Catlina.out日志。我想传递我的整数和;回到视图,我怎样才能做到这一点 这里是初步的看法 <table> <tr> <td><form:label path="a">First Number</form:label></td> <td>
<table>
<tr>
<td><form:label path="a">First Number</form:label></td>
<td><form:input path="a" /></td>
</tr>
<tr>
<td><form:label path="b">Second Number</form:label></td>
<td><form:input path="b" /></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="Add Numbers"/>
</td>
</tr>
在回答初始问题后更新,我添加了一个新视图以显示结果,并更改了我的控制器:
@RequestMapping(value = "/addNumbers", method = RequestMethod.POST)
public String addNumbers(@ModelAttribute("calculator")
Calculator calculator, BindingResult result) {
System.out.println(calculator.getA() + calculator.getB());
return "redirect:calculator.html";
}
<%@ include file="/WEB-INF/jsp/include.jsp" %>
<html>
<head>
<title>Syed Shah</title>
</head>
<body>
<h2>Results</h2>
${calculator.A}
<a href="calculator.html">Back to Calculator</a>
</body>
</html>
public class CalculatorController {
@RequestMapping(value = "/addNumbers", method = RequestMethod.POST)
public String addNumbers(Calculator calculator, BindingResult result, Model model) {
//System.out.println(calculator.getA() + calculator.getB());
model.addAttribute("calculator", calculator);
return "result"; // notice no redirect
}
我的新控制器:
@RequestMapping(value = "/addNumbers", method = RequestMethod.POST)
public String addNumbers(@ModelAttribute("calculator")
Calculator calculator, BindingResult result) {
System.out.println(calculator.getA() + calculator.getB());
return "redirect:calculator.html";
}
<%@ include file="/WEB-INF/jsp/include.jsp" %>
<html>
<head>
<title>Syed Shah</title>
</head>
<body>
<h2>Results</h2>
${calculator.A}
<a href="calculator.html">Back to Calculator</a>
</body>
</html>
public class CalculatorController {
@RequestMapping(value = "/addNumbers", method = RequestMethod.POST)
public String addNumbers(Calculator calculator, BindingResult result, Model model) {
//System.out.println(calculator.getA() + calculator.getB());
model.addAttribute("calculator", calculator);
return "result"; // notice no redirect
}
堆栈跟踪:
org.apache.jasper.jaspereException:处理时发生异常
第9行的JSP页面/WEB-INF/JSP/result.JSP
6:7:Results 8:9:${calculator.getAddSum}10:11:返回计算器12: 堆栈跟踪: org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:521) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:430) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) javaservlet.http.HttpServlet.service(HttpServlet.java:717) org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238) org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:264) org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1208) org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:992) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:939) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:838) javaservlet.http.HttpServlet.service(HttpServlet.java:637) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) javaservlet.http.HttpServlet.service(HttpServlet.java:717) 根本原因 javax.el.PropertyNotFoundException:在上找不到属性“getAddSum” 类型webcalculator.form.Calculator javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:214) javax.el.BeanELResolver$BeanProperties.access$400(BeanELResolver.java:191) 属性(BeanELResolver.java:300) getValue(BeanELResolver.java:81) getValue(CompositeELResolver.java:54) org.apache.el.parser.AstValue.getValue(AstValue.java:123) org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186) org.apache.jasper.runtime.PageContextImpl.proprietaryeevaluate(PageContextImpl.java:938) org.apache.jsp.WEB\u 002dINF.jsp.result\u jsp.\u jsp服务(result\u jsp.java:69) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javaservlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) javaservlet.http.HttpServlet.service(HttpServlet.java:717) org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238) org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:264) org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1208) org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:992) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:939) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:838) javaservlet.http.HttpServlet.service(HttpServlet.java:637) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) javaservlet.http.HttpServlet.service(HttpServlet.java:717)
通常情况下,将对象添加到模型并返回视图名称
@RequestMapping(value = "/addNumbers", method = RequestMethod.POST)
public String addNumbers(Calculator calculator, BindingResult result, Model model) {
System.out.println(calculator.getA() + calculator.getB());
model.addAttribute("calculator", calculator);
return "myViewName"; // notice no redirect
}
这里,我假设您的计算器
对象包含与计算器.getSum()类似的总和。在jsp中,您可以执行以下操作
${calculator.sum}
检索总和
如果没有Model
和您以前拥有的@modeldattribute
,上述功能(可能)也可以正常工作。但是,ModelAttribute
仅适用于一个请求的范围。在Spring处理过程中的某个时刻,所有模型属性都被添加到请求属性中,然后在您分派到的jsp中可用
但是,由于您执行了重定向
,因此会发出一个新请求,并且您的请求属性将丢失。如果仍要执行重定向,则必须使用会话中临时“持久化”的RedirectAttributes/FlashAttributes
。Ctrl+F。异常的根本原因是堆栈跟踪的更深层次
javax.el.PropertyNotFoundException:在webcalculator.form.Calculator类型上找不到属性“getAddSum”
所以你的计算器没有这个方法
另外:因为你的计算器已经是modelattribute了,据我所知,你不必再添加它 您的表单似乎与处理程序方法不匹配。查看flash属性,因为您正在执行重定向。Sotirios我正在从表单ok接收数据,如System.out.println(calculator.getA()+calculator.getB());打印出这些值的总和。我真正想要的是将总和传递回视图,而不是Catalina.log。我真正想要的是将值相加,然后