0

私はSpring MVC 3を学んでいますが、単純な問題だと思います。フォームに 2 つの整数を取る View 電卓があります。これらはフォーム pojo に渡されます。私のコントローラーは、Catlina.out ログに追加して出力します。int sum を渡したいです。ビューに戻って、どうすればこれを達成できますか。

これが最初のビューです

<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:

結果

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) javax.servlet.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) javax.servlet.http.HttpServlet.service(HttpServlet.java:637) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) javax.servlet. http.HttpServlet.service(HttpServlet.java:717)HttpServlet.service(HttpServlet.java:637) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) javax.servlet.http.HttpServlet.service(HttpServlet.java:717)HttpServlet.service(HttpServlet.java:637) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

根本的な原因

javax.el.PropertyNotFoundException: プロパティ 'getAddSum' が webcalculator.form.Calculator 型で見つかりません javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:214) 191) javax.el.BeanELResolver.property(BeanELResolver.java:300) javax.el.BeanELResolver.getValue(BeanELResolver.java:81) javax.el.CompositeELResolver.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.proprietaryEvaluate(PageContextImpl.java:938) org.apache. jsp.WEB_002dINF.jsp.result_jsp._jspService(result_jsp.java:69) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.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) javax.servlet.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) javax. servlet.http.HttpServlet.service(HttpServlet.java:637) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) javax.servlet.http.HttpServlet.service(HttpServlet.java:717)812) javax.servlet.http.HttpServlet.service(HttpServlet.java:717)812) javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

4

2 に答える 2

0

例外の根本的な原因は、スタック トレースの奥深くにあります。

javax.el.PropertyNotFoundException: プロパティ 'getAddSum' が webcalculator.form.Calculator タイプで見つかりません

したがって、電卓にはこのメソッドがありません。

また、あなたの電卓はすでにモデル属性であるため、私が知る限り、再度追加する必要はありません。

于 2013-05-07T17:10:03.837 に答える