package org.springside.examples.quickstart.web.task;
import java.util.Map;
import javax.servlet.ServletRequest;
import javax.validation.Valid;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import org.springside.examples.quickstart.entity.Task;
import org.springside.examples.quickstart.entity.User;
import org.springside.examples.quickstart.service.account.ShiroDbRealm.ShiroUser;
import org.springside.examples.quickstart.service.task.TaskService;
import org.springside.modules.web.Servlets;
import com.google.common.collect.Maps;
/**
* Task管理的Controller, 使用Restful风格的Urls:
*
* List page : GET /task/
* Create page : GET /task/create
* Create action : POST /task/create
* Update page : GET /task/update/{id}
* Update action : POST /task/update
* Delete action : GET /task/delete/{id}
*
* @author calvin
*/
@Controller
@RequestMapping(value = "/task")
public class TaskController {
private static final String PAGE_SIZE = "3";
private static Map<String, String> sortTypes = Maps.newLinkedHashMap();
static {
sortTypes.put("auto", "自动");
sortTypes.put("title", "标题");
}
@Autowired
private TaskService taskService;
@RequestMapping(value = "")
public String list(@RequestParam(value = "page", defaultValue = "1") int pageNumber,
@RequestParam(value = "page.size", defaultValue = PAGE_SIZE) int pageSize,
@RequestParam(value = "sortType", defaultValue = "auto") String sortType, Model model,
ServletRequest request) {
Map<String, Object> searchParams = Servlets.getParametersStartingWith(request, "search_");
Long userId = getCurrentUserId();
Page<Task> tasks = taskService.getUserTask(userId, searchParams, pageNumber, pageSize, sortType);
model.addAttribute("tasks", tasks);
model.addAttribute("sortType", sortType);
model.addAttribute("sortTypes", sortTypes);
// 将搜索条件编码成字符串,用于排序,分页的URL
model.addAttribute("searchParams", Servlets.encodeParameterStringWithPrefix(searchParams, "search_"));
return "task/taskList";
}
@RequestMapping(value = "create", method = RequestMethod.GET)
public String createForm(Model model) {
model.addAttribute("task", new Task());
model.addAttribute("action", "create");
return "task/taskForm";
}
@RequestMapping(value = "create", method = RequestMethod.POST)
public String create(@Valid 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}", method = RequestMethod.GET)
public String updateForm(@PathVariable("id") Long id, Model model) {
model.addAttribute("task", taskService.getTask(id));
model.addAttribute("action", "update");
return "task/taskForm";
}
@RequestMapping(value = "update", method = RequestMethod.POST)
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) {
System.out.println("=================删除");
taskService.deleteTask(id);
redirectAttributes.addFlashAttribute("message", "删除任务成功");
return "redirect:/task/";
}
/**
* 所有RequestMapping方法调用前的Model准备方法, 实现Struts2 Preparable二次部分绑定的效果,先根据form的id从数据库查出Task对象,再把Form提交的内容绑定到该对象上。
* 因为仅update()方法的form中有id属性,因此仅在update时实际执行.
*/
@ModelAttribute()
public void getTask(@RequestParam(value = "id", required = false) Long id, Model model) {
if (id != null) {
model.addAttribute("task", taskService.getTask(id));
}
}
/**
* 取出Shiro中的当前用户Id.
*/
private Long getCurrentUserId() {
ShiroUser user = (ShiroUser) SecurityUtils.getSubject().getPrincipal();
return user.id;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
SpringSide 项目源码
共144个文件
class:32个
java:30个
xml:14个
1星 需积分: 9 23 下载量 185 浏览量
2015-05-13
11:28:52
上传
评论
收藏 305KB RAR 举报
温馨提示
经过测试,完美实用的springSide项目源码,直接部署在开发工具上即可使用。
资源推荐
资源详情
资源评论
收起资源包目录
SpringSide 项目源码 (144个子文件)
eclipse.bat 260B
smoke-test.bat 178B
jetty.bat 178B
refresh-db.bat 137B
package.bat 127B
TaskController.class 6KB
AccountService.class 5KB
TaskService.class 5KB
TaskRestController.class 5KB
TaskRestFT.class 5KB
BaseFunctionalTestCase.class 4KB
UserAdminController.class 4KB
ShiroDbRealm.class 4KB
AccountServiceTest.class 4KB
ProfileController.class 3KB
User.class 3KB
TaskGuiFT.class 3KB
JpaMappingTest.class 2KB
BaseSeleniumTestCase.class 2KB
UserAdminFT.class 2KB
RegisterController.class 2KB
TaskDaoTest.class 2KB
QuickStartServer.class 2KB
SecurityFT.class 2KB
RegisterFT.class 2KB
RestExceptionHandler.class 2KB
ShiroDbRealm$ShiroUser.class 1KB
Task.class 1KB
LoginController.class 1KB
TaskData.class 1KB
ProfileFT.class 1KB
TaskDao.class 1KB
ServiceException.class 865B
UserData.class 860B
IdEntity.class 794B
TaskRestFT$TaskList.class 581B
UserDao.class 479B
.classpath 23KB
org.eclipse.wst.common.component 811B
bootstrap.css 121KB
bootstrap.min.css 101KB
bootstrap-responsive.css 21KB
bootstrap-responsive.min.css 16KB
default.css 305B
validate.css 178B
unchecked.gif 223B
favicon.ico 946B
TaskController.java 5KB
ShiroDbRealm.java 4KB
TaskRestFT.java 4KB
TaskRestController.java 3KB
AccountService.java 3KB
BaseFunctionalTestCase.java 3KB
UserAdminController.java 3KB
TaskService.java 2KB
AccountServiceTest.java 2KB
User.java 2KB
ProfileController.java 2KB
TaskGuiFT.java 2KB
BaseSeleniumTestCase.java 2KB
UserAdminFT.java 2KB
RegisterController.java 2KB
SecurityFT.java 1KB
QuickStartServer.java 1KB
JpaMappingTest.java 1KB
TaskDaoTest.java 1KB
RegisterFT.java 1KB
LoginController.java 1016B
RestExceptionHandler.java 938B
Task.java 907B
TaskDao.java 727B
IdEntity.java 721B
ServiceException.java 608B
TaskData.java 552B
ProfileFT.java 507B
UserData.java 427B
UserDao.java 300B
jquery-1.8.3.js 260KB
jquery-1.8.3.min.js 91KB
bootstrap.js 57KB
bootstrap.min.js 31KB
jquery.validate.min.js 21KB
messages_bs_zh.js 1KB
taskList.jsp 3KB
adminUserForm.jsp 2KB
register.jsp 2KB
login.jsp 2KB
profile.jsp 2KB
default.jsp 2KB
taskForm.jsp 1KB
adminUserList.jsp 1KB
header.jsp 937B
500.jsp 690B
404.jsp 331B
footer.jsp 164B
quickstart.log 0B
inputFiles.lst 2KB
createdFiles.lst 1013B
createdFiles.lst 0B
MANIFEST.MF 114B
共 144 条
- 1
- 2
资源评论
- 夏侯凌宇2020-04-15提示病毒,还不能用,哎
临沂码农王老七
- 粉丝: 16
- 资源: 11
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功