将get值传递给方法并在jsp页面中调用

时间:2016-11-13 09:52:16

标签: spring forms jsp spring-mvc

我正在使用spring mvc,制作一个小型的网络应用程序。 我在jsp页面中有一个表单,我试图将我的.GET控制器中的值传递给一个方法,并在按下同一JSP页面上的“提交”按钮后显示调用方法的结果,最好是在同一页上。

这是表单的样子: http://i65.tinypic.com/6gyo02.png

这是我从表单中获取值后想要调用的方法:

public void calcMacros() {
        int goal = 0;
        if (this.goal == 0.7){
            goal = 1;
        } else if (this.goal == 0.9) {
            goal = 2;
        } else if (this.goal == 1) {
            goal = 3;
        } else if (this.goal == 1.2){
            goal = 4;
        }

        switch (goal) {
            case 1: weightLoss();
                    weightLossProtCalc();
                    weightLossCarbCalc();
                    weightLossFatCalc();
                break;
            case 2: weightLoss();
                    weightLossProtCalc();
                    weightLossCarbCalc();
                    weightLossFatCalc();
                break;
            case 3: tdeeCalculator();
                    maintainProteinCalc();
                    maintainCarbCalc();
                    maintainFatCalc();
                break;
            case 4: weightGain();
                    weightGainProtCalc();
                    weightGainCarbCalc();
                    weightGainFatCalc();
                break;
            default:
                break;
        }
        System.out.println("selected goal was " + goal + "and proper methods have been called.");
    }

最好的问题是,如何将此方法转换为.POST控制器,以便我可以在同一个JSP页面中显示它的结果。另外如何在JSP页面中调用此方法/控制器?

谢谢!

编辑:控制器

@RequestMapping(value = "/calculator" ,  method = RequestMethod.GET)
    public String calculatorPage(ModelMap model, MacroCalculatorForm macroCalculatorForm) {
        model.addAttribute("user",getPrincipal());
        macroCalculatorForm.calcMacros();
return "calculator";
    }

这会这样做,还是应该重写我想要调用此控制器的方法?

2 个答案:

答案 0 :(得分:0)

@Controller中应该有两种方法:

(1)支持GET的一种方法:这是为了提供第一页的显示View(在计算之前)。

(2)支持POST的一种方法:这是处理从第一页接收的输入,然后将结果发送回View(JSP)。

答案 1 :(得分:0)

GET 请求中读取值很容易。只需要为年龄示例定义带有输入名称的参数:

@RequestMapping(value = "/calculator" ,  method = RequestMethod.GET)
    public String calculatorPage(ModelMap model, 
         MacroCalculatorForm macroCalculatorForm,
         @RequestParam(value = "age") int age)
    {
        //Now you can use age value in your method 

        model.addAttribute("user",getPrincipal());
        macroCalculatorForm.calcMacros();
        return "calculator";
    }