Java Spring MVC 3.0处理数据

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>

我正在学习SpringMVC3,我想这是一个简单的问题。我有一个视图计算器,它在一个表单中接受2个整数。这些都传给了我的表格pojo。我的控制器添加并打印到Catlina.out日志。我想传递我的整数和;回到视图,我怎样才能做到这一点

这里是初步的看法

<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。我真正想要的是将值相加,然后