2017-02-22 62 views
0

我正面臨基於Spring 4.3.5的MVC應用程序Spring 4.3.5我可以使用帶有@ModelAttribute註解的運行時生成的java類嗎?

當用戶提交表單並且調用正確的控制器方法調用時,@ModelAttribute註釋從模型中拉出綁定的對象。 鑑於@ModelAttribute註解的語法,該對象類型被指定到方法參數定義,如例如

@ModelAttribute("command") Mail mail 
@ModelAttribute("command") News news 

對於某些功能上的原因,該應用程序在運行中創建java類從xml描述符通過Castor框架。這些類在開發時不存在,但僅在運行時存在。

我找不到用@ModelAttribute註解來使用這些運行時生成類的方法!目前,我應該爲每一個對象開發新的控制器方法。

有沒有人有任何想法或建議?

THX很多提前

+0

您不能對任何動態使用註釋 - 這是一個javac限制。您可以改爲使用這些註釋的基礎AOP系統。 – OrangeDog

+0

你是什麼意思?你能給我進一步的建議嗎? – vale

回答

0

是的,這是可能的結合動態創建的對象的請求,只要它粘附於POJO結構。 this blog post中有一個示例(編號爲2),它處理完全相同的情況。

綁定對象的參數類型不需要是靜態的。它可以和java.lang.Object一樣通用。

例如

@Controller 
public class CommandController { 

    @ModelAttribute("command") 
    public Object getInitializeObject(HttpServletRequest request) { 
     //use your own logic to instantiate the object. 
     if(request.getParameter("requesttype").equals("mail")) { 
      return new Mail(); 
     } 
     else { 
      return new News(); 
     } 
    } 

    @RequestMapping(value="/myrequest.do", method=RequestMethod.GET) 
    public ModelAndView handleRequest(@ModelAttribute("command") Object command) { 
     //request handling logic here. 
    } 

} 
相關問題