2012-11-27 76 views
0

我正在使用Spring Framework在Java中開發Web應用程序。在一頁上,我讓用戶選擇年份。下面是代碼:Spring MVC Web應用程序 - 正確使用Model

@Controller 
public class MyController { 

    @RequestMapping(value = "/pick_year", method = RequestMethod.GET) 
    public String pickYear(Model model) { 
     model.addAttribute("yearModel", new YearModel); 
     return "pick_year"; 
    } 

    @RequestMapping(value = "/open_close_month_list", method = RequestMethod.POST) 
    public String processYear(Model model, @ModelAttribute("yearModel") YearModel yearModel) { 
     int year = yearModel.getYear(); 
     // Processing 
    } 
} 


public class YearModel { 
    private int year; 

    public int getYear() { 
     return year; 
    } 

    public void setYear(int year) { 
     this.year = year; 
    } 
} 

此實現的工作,但我想用的東西simplier從用戶那裏得到的一年。我覺得製作特殊模型只是爲了得到一個整數不是很好的方法。

所以,我的問題是:有可能以某種方式簡化此代碼?

謝謝你的幫助。 米蘭

+0

代碼無法編譯。你確定它是真正的代碼嗎? – Bozho

回答

4

通常情況下,您使用該模型將數據從控制器傳遞到視圖,並且您使用@RequestParam從控制器中提交的表單中獲取數據。意思是,你的POST方法看起來像:

public String processYear(@RequestParam("year") int year) { 
    // Processing 
} 
+0

謝謝,那正是我所尋找的:) –

1

事實上你只需要存儲的整數,你並不需要創建一個全新的特殊類來保存它

@Controller 
public class MyController { 
    @RequestMapping(value = "/pick_year", method = RequestMethod.GET) 
    public String pickYear(ModelMap model) { 
     model.addAttribute("year", 2012); 
     return "pick_year"; 
    } 

    @RequestMapping(value = "/open_close_month_list", method = RequestMethod.POST) 
    public String processYear(@ModelAttribute("year") int year) { 
     // Processing 
    } 
} 

盡你所能相反(如果可能的話)是重做你的視圖,以便你可以使用@RequestParam直接傳遞一個整數到你的方法pickYear,將它渲染到視圖中,這樣這個參數可以以相同的方式傳遞到第二個方法processYear

@Controller 
public class MyController { 
    // In the pick_year view hold the model.year in any hidden form so that 
    // it can get passed to the process year method 
    @RequestMapping(value = "/pick_year", method = RequestMethod.GET) 
    public ModelAndView pickYear(@RequestParam("year") int year) { 
     ModelAndView model = new ModelAndView("pick_year"); 
     model.addAttribute("year", 2012); 
     return model; 
    } 

    @RequestMapping(value = "/open_close_month_list", method = RequestMethod.POST) 
    public String processYear(@RequestParam("year") int year) { 
     // Processing 
    } 
} 
相關問題