/**
 * Task管理的Controller, 使用Restful风格的Urls:
 * 
 * List   page        : GET  /task/
 * Create page        : GET  /task/create
 * Create action      : POST /task/save
 * Update page        : GET  /task/update/{id}
 * Update action      : POST /task/save/{id}
 * Delete action      : POST /task/delete/{id}
 */
@Controller
@RequestMapping(value = "/task")
public class TaskController {

	@Autowired
	private TaskService taskService;

	@RequestMapping(value = { "list", "" })
	public String list(Model model) {
		Long userId = getCurrentUserId();
		List<Task> tasks = taskService.getUserTask(userId);

		model.addAttribute("tasks", tasks);
		return "task/taskList";
	}

	@RequestMapping(value = "create")
	public String createForm(Model model) {
		model.addAttribute("task", new Task());
		return "task/taskForm";
	}

	@RequestMapping(value = "save")
	public String create(@Valid @ModelAttribute("newTask") Task newTask, RedirectAttributes redirectAttributes) {
		User user = new User(getCurrentUserId());
		newTask.setUser(user);

		taskService.saveTask(newTask);
		redirectAttributes.addFlashAttribute("message", "创建任务成功");
		return "redirect:/task/";
	}

	@RequestMapping(value = "update/{id}")
	public String updateForm(@PathVariable("id") Long id, Model model) {
		model.addAttribute("task", taskService.getTask(id));
		return "task/taskForm";
	}

	@RequestMapping(value = "save/{id}")
	public String update(@Valid @ModelAttribute("task") Task task, RedirectAttributes redirectAttributes) {
		taskService.saveTask(task);
		redirectAttributes.addFlashAttribute("message", "更新任务成功");
		return "redirect:/task/";
	}

	@RequestMapping(value = "delete/{id}")
	public String delete(@PathVariable("id") Long id, RedirectAttributes redirectAttributes) {
		taskService.deleteTask(id);
		redirectAttributes.addFlashAttribute("message", "删除任务成功");
		return "redirect:/task/";
	}

	/**
	 * 使用@ModelAttribute, 实现Struts2 Preparable二次部分绑定的效果,先根据form的id从数据库查出Task对象,再把Form提交的内容绑定到该对象上。
	 * 因为仅update()方法的form中有id属性,因此本方法在该方法中执行.
	 */
	@ModelAttribute("task")
	private Task getTask(@RequestParam(value = "id", required = false) Long id) {
		if (id != null) {
			return taskService.getTask(id);
		}
		return null;
	}

	/**
	 * 不要绑定对象中的id属性.
	 */
	@InitBinder
	protected void initBinder(WebDataBinder binder) {
		binder.setDisallowedFields("id");
	}

	private Long getCurrentUserId() {
		ShiroUser user = (ShiroUser) SecurityUtils.getSubject().getPrincipal();
		return user.id;
	}
}
最近下载更多
jeep123456  LV10 2020年6月9日
hanyoujun  LV1 2018年7月7日
丷小胤丷  LV7 2018年1月26日
复制三次胖狗  LV7 2017年12月6日
lee123321  LV22 2017年11月28日
LHJ123  LV30 2017年11月9日
chinafjfzlj  LV31 2017年9月7日
foxmail10001  LV1 2017年5月16日
仗键走天涯  LV2 2017年1月22日
feifei0605  LV1 2016年10月28日
最近浏览更多
沈从文  LV2 3月17日
YUProject  LV8 2022年12月21日
gshnlj  LV15 2022年7月28日
hellobailin  LV3 2022年4月14日
shamo1234  LV1 2021年7月6日
yeYEYE了  LV1 2021年7月4日
秦sir3067683450  LV10 2021年6月2日
Qolmen  LV12 2021年2月3日
silence5200  LV1 2020年11月1日
866521  LV2 2020年10月20日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友