2016-11-13 67 views
0

我正在使用spring mvc,製作一個小型web應用程序。 我在jsp頁面中有一個表單,並且我試圖將我的.GET控制器中的值傳遞給方法,並在同一個JSP頁面或另一個頁面上按下「Submit」按鈕後顯示調用方法的結果,最好在同一頁面上。通過獲取值的方法和調用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"; 
    } 

這會做到這一點,或者我應該重寫我想獲得所謂的這個控制器的方法?

+0

您的GET控制器在哪裏?在這裏添加代碼 – developer

+0

@javaguy我添加了控制器,我應該用它內部的方法重寫控制器嗎? –

回答

0

你應該在你的@Controller兩個方法:

(1)的一種方法,它支持GET:這是爲了提供第一頁(計算之前)的顯示View

(2)支持POST的一種方法:這是處理從第一頁接收到的輸入,然後將結果發送回視圖(JSP)。

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"; 
    } 
相關問題