2010-08-25 47 views
1

目前,我用我的網頁,其中使用MultiActionController這完全顯示一個jsp頁面,在同一頁上,現在我想驗證一個簡單的文本框(input/form:input)也希望從下拉列表中檢索名稱和ID尋呼(Select option )一旦鏈接被點擊。簡單!使用的MultiActionController

兩個問題

  1. 我可以使用一個類實現驗證?並注入它與在控制器中的config或其他方式simpleformcontroller相同的方式?怎麼樣?請舉例嗎?

  2. 我可以在jsp中使用java bean - >我總是得到綁定錯誤,如何指示控制器使用這個bean?我也已經作爲參數傳遞給我的方法添加,也試圖重寫newCommandObject

Controller.java

public ModelAndView add(HttpServletRequest request, HttpServletResponse response, Person person) throws Exception { 

     return new ModelAndView("userpage"); 
    } 

@Override 
    protected Object newCommandObject(Class clazz) 
    throws Exception { 

     return new Person(); 
} 
+0

什麼版本你使用的是Spring-MVC?我建議你使用JSR-303驗證器,它可以從www.hibernate.org獲得,但這需要Spring的新版本。 – heikkim 2010-11-25 12:48:14

+0

我使用Spring 3.0 – Gauls 2011-01-11 13:44:24

+0

我第二次使用JSR 303驗證器。但是既然你使用Spring 3,你可能想重新考慮使用MultiActionController。舊的控制器動物園有一個更靈活的後繼,您可以使用任何類作爲控制器使用一套新的註釋。搜索註釋Controller和Valid。 – 2011-09-06 15:56:41

回答

0

我會做類似下面的Spring版本> 2.5

@Controller 
public class YourController 
{ 
    protected final Log logger = LogFactory.getLog(getClass()); 

    private final String yourInputJsp = "yourInputJsp"; 

    private final String yourInputJspSuccess = "yourInputJspSuccess"; 

    private YourService yourService; 

    @Autowired 
    @Qualifier("yourFormValidator") 
    private YourFormValidator validator; 

    @RequestMapping(value = "/yourRequest.htm", method = RequestMethod.GET) 
    public String referenceData(ModelMap model, HttpServletRequest request) throws Exception 
    { 
     yourService = new YourServiceImpl(ContextHandler.getWebAppContext(request)); 
     YourFormData yourFormData = new YourFormData(); 

     model.addAttribute("yourFormData", yourFormData); 

     return yourInputJsp; 
    } 

    @InitBinder() 
    public void initBinder(WebDataBinder binder) throws Exception { 
     binder.registerCustomEditor(String.class, new StringMultipartFileEditor()); 
    } 

     @RequestMapping(value="/yourRequest.htm", method = RequestMethod.POST) 
     public String process(@ModelAttribute("yourFormData") YourFormData yourFormData, BindingResult result, SessionStatus status, HttpServletRequest request) 
     { 
      String mav = yourInputJsp; 
      validator.validate(yourFormData, result); 

      if(!result.hasErrors()) 
      { 
       //Some business logic 

       mav = "redirect:yourInputJspSuccess.htm"; 
       status.setComplete(); 
      } 

      return mav; 
    } 
} 
相關問題