2010-08-25 48 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; 
    } 
} 
相关问题