当前位置: 首页 > 知识库问答 >
问题:

Spring MVC 3.0处理数据

白才捷
2023-03-14

我正在学习Spring MVC 3,我想我陷入了一个简单的问题。我有一个视图计算器,它在一个表单中接受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>

我的计算器实例:

package webcalculator.form;


//import webcalculator.domain.Numbers;

public class Calculator {


    private int A;
    private int B;
    private int sum;

    public int getA() {
        return A;
    }
    public void setA(int a) {
        A = a;
    }


    public int getB() {
        return B;
    }
    public void setB(int b) {
        B = b;
    }


    public int getAddSum(){
        sum = A+B;
        return sum;
    }


}

我的新控制器:

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.JasperException:在第9行处理JSP页面 /WEB-INF/jsp/result.jsp时发生异常

6: 7:

堆栈跟踪:iew.java:264JspServletWorg.springframework.web.servlet.JspException(JspServletWervlet.render)ervlet.java:1208JspServletWorg.springframework.web.servlet.(JspServletWervlet.process)ervlet.java:992JspSorg.springframework.web.servlet.JspFile(JspServlet.do)ervlet.java:939JspSorg.springframework.web.servlet.(JspServlet.do)ervlet.java:856HttpServlet.service(HttpServlet.java:717)org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)org.springframework.web.servlet.view.AbstractView.render(AbstractVorg.apache.jasper.servlet.)rapper.handleDispatcherSrapper.java:521(DispatcherSorg.apache.jasper.servlet.)rapper.serviceDispatcherSrapper.java:430DispatchResult(DispatcherSorg.apache.jasper.servlet.)ervlet.serviceDispatcherServlet.java:313调度(DispatcherSorg.apache.jasper.servlet.)ervlet.serviceDispatcherServlet.java:260Service(DispatcherSjavax.servlet.http.)org. springframe. web. servlet. FrameworkServlet. doPost(FrameworkServlet. java: 838)javax. servlet. http. HttpServlet

根本原因

WEB_002dINF属性getAddSum不在类型_jsp计算器_jspServiceBeanELResolver$BeanPorg.apache.jasper.runtime.(BeanELRmpl.proprietary)mpl.java:938BeanELResolver$BeanPorg.apache.jsp.400美元(BeanELRjsp.result)result_jsp.java:69BeanELRorg.apache.jasper.runtime.(BeanELRase.service)ase.java:70BeanELRjavax.servlet.http.值(BeanELResolver.java:81)javax.el.CompositeELResolver.get值(CompositeELResolver.java:54)org.apache.el.parser.AstValue.get值(AstValue.java:123)org.apache.el.ValueExpressionImpl.get值(ValueExpressionImpl.java:186)roperties.getPageContextIesolver.java:214评估(PageContextIjavax.el.)roperties.accessjavax.el.esolver.java:191webcalculator.form.javax.el.(javax.el.)esolver.propertyHttpJspBesolver.java:300(HttpJspBjavax.el.)esolver.getHttpServlet. service(HttpServlet. java: 717)org. apache. jasper. servlet. JspServletWrapper. service(JspServletWrapper. java: 388)org. apache. jasper. servlet. JspServletHttpServlet. service(HttpServlet. java:717)

共有2个答案

轩辕煌
2023-03-14

异常的根本原因是更深层次的。

javax。艾尔。PropertyNotFoundException:在类型webcalculator上找不到属性“getAddSum”。类型计算器

所以你的计算器没有这个方法。

另外:据我所知,由于您的计算器已经是一个模型属性,因此您不必再次添加它。

陶成济
2023-03-14

通常,您将如何执行此操作是将对象添加到模型并返回视图名称。

@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}

来取回总数。

如果没有模型和之前的@modeldattribute,上述功能(可能)也可以使用。然而,ModelAttribute只适用于一个请求的范围。在Spring处理过程中的某个时刻,所有模型属性都会添加到请求属性中,然后可以在分派到的jsp中使用。

但是,由于您执行了重定向,因此会发出一个新请求,并且您的请求属性将丢失。如果仍要执行重定向,则必须使用会话中临时“持久化”的重定向属性/FlashAttributes。在这里输入Ctrl F。

 类似资料:
  • 数据处理 可将字段的值进行处理得到最终结果 html标签过滤 内容替换 批量替换 关键词过滤 条件判断 截取字符串 翻译 工具箱 将文本链接标记为图片链接:如果字段的值是完整的url链接(非<img>标签内的链接),可将链接识别为图片 使用函数 调用接口

  • 我遇到了一些数据,我想用许多不同的方式对它进行排序,例如按购买最多的最便宜的产品进行排序。我想一行一行地对文档进行分组,因为每行包含另一个“项目”。我附上了一张图片供参考。我更喜欢使用Java,但如果有必要,我会学习R。我是否手动将每行编码为数组?有400个项目,如果这是唯一的方法,我可以将其分成几天。 样品

  • Data Preparation You must pre-process your raw data before you model your problem. The specific preparation may depend on the data that you have available and the machine learning algorithms you want

  • 在输入的JSON数据中,v的值越高,粒子越亮,并且它们从出发国家到目的国家的运行越快。 (请查阅Michael Chang的文章来 了解他是如何提出这个想法的)。Gio.js库会自动缩放输入数据的范围以便于更好的数据可视化。作为开发人员,您还可以定义自己的预处理数据的方式。

  •        随着数据获取的便捷,GIS数据已不再成为GIS分析的瓶颈,但对海量数据的加载却又成了GIS相关软件的难题。LocaSpaceViewer对数据的加载进行了大量的优化,极大的加快了数据的加载速度。同时经过各种摸索,不断的改进算法与数据的存储和读取方式,研究出了能够加载速度更快的数据结构。        LocaSpaceViewer提供了数据影像处理功能,可以把多个影像或者地形数据进行

  • 坐标地址批处理工具 功能介绍        地理编码指将结构化内容转换为经纬度坐标,逆地理编码指将经纬度坐标转换成结构化地址。使用该功能模块,可以快速批量把Excel文件内的大量地址转换为经纬度信息,或者实现反查。        当前功能模块使用高德接口。由于地理编码与逆地理编码需要使用高德API接口,而API接口日请求次数有限,公共API KEY无法满足大批量请求,使用自己申请的高德KEY可以解

  • 我的数据库中有大约1000万个blob格式的文件,我需要转换并以pdf格式保存它们。每个文件大小约为0.5-10mb,组合文件大小约为20 TB。我正在尝试使用spring批处理实现该功能。然而,我的问题是,当我运行批处理时,服务器内存是否可以容纳那么多的数据?我正在尝试使用基于块的处理和线程池任务执行器。请建议运行作业的最佳方法是否可以在更短的时间内处理如此多的数据

  • 本文向大家介绍python数据预处理 :数据共线性处理详解,包括了python数据预处理 :数据共线性处理详解的使用技巧和注意事项,需要的朋友参考一下 何为共线性: 共线性问题指的是输入的自变量之间存在较高的线性相关度。共线性问题会导致回归模型的稳定性和准确性大大降低,另外,过多无关的维度计算也很浪费时间 共线性产生原因: 变量出现共线性的原因: 数据样本不够,导致共线性存在偶然性,这其实反映了缺