`

开发表单控制器

 
阅读更多
/** 
 * @Description:表单控制器
 * 
 * @author youyang_java@139.com
 * 
 */
@Controller
@RequestMapping("/edit.htm")
@SessionAttributes("curDemo")
public class FormController {
	
	@Resource
	private Validator demoValidator;
	
	@InitBinder
	public void initBinder(WebDataBinder binder){
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		format.setLenient(false);
		binder.registerCustomEditor(Date.class, new CustomDateEditor(format,false));
	}
	
	@ModelAttribute("birthes")
	public Map<String, String> getList(){
		Map<String, String> map = new HashMap<String, String>();
		map.put("2011-4-28","生日1");
		map.put("2011-5-2","生日2");
		map.put("2011-6-28","生日3");
		map.put("2011-6-2","生日4");
		return map;
	}

	@RequestMapping(method=RequestMethod.GET)
	public String setUpForm(@RequestParam(required=false)String name,ModelMap map){
		Demo demo = new Demo();
		if (StringUtils.isNotBlank(name)) {
			System.out.println(name);
			demo.setName(name);
			demo.setId(1l);
		}
		map.put("curDemo", demo);
		return "/test/editForm";
	}
	
	@RequestMapping(method=RequestMethod.POST)
	public String processSubmit(@ModelAttribute("curDemo")Demo demo,BindingResult result,SessionStatus status,ModelMap map){
		
		demoValidator.validate(demo, result);
		
		if (result.hasErrors()) {
			return "/test/editForm";
		}
		
		Demo curDemo = (Demo) map.get("curDemo");
		System.out.println("curDemo------"+curDemo.getId());
		System.out.println("curDemo------"+curDemo.getName());
		System.out.println("curDemo------"+curDemo.getBirth());
		System.out.println(demo.getId());
		System.out.println(demo.getName());
		System.out.println(demo.getBirth());
		
		status.setComplete();
		
		return "redirect:/success.htm";
	}
	
}

 

@InitBinder
public void initBinder(WebDataBinder binder)

@InitBinder注解将定制的属性编辑器注册到绑定对象上。

@ModelAttribute("birthes")
public Map<String, String> getList()
把@ModelAttribute注解使用到方法上,则在表单在展示前会调用该方法,并把方法的返回值放到模型中。

 

@RequestMapping(method=RequestMethod.POST)
public String processSubmit(@ModelAttribute("curDemo")Demo demo,BindingResult result,SessionStatus status,ModelMap map)

把@ModelAttribute注解使用到方法参数上,可以从模型中得到命令对象,并绑定到方法上。不过该注解可以不使用。

 

status.setComplete();

表单执行完成,清空session里面的值。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics