menuformcontroller.java
来自「Java的框架」· Java 代码 · 共 214 行
JAVA
214 行
package mcaps.core.menu.webapp.controller;
import java.util.Locale;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import mcap.core.base.webapp.controller.BaseFormController;
import mcap.core.menu.model.Menu;
import mcap.core.menu.service.MenuManager;
import mcap.core.user.service.RoleManager;
import org.apache.commons.lang.StringUtils;
import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.view.RedirectView;
/**
* Implementation of BaseFormController that interacts with the
* MenuManager to handle request to retrieve/persist menu info to
* data store.
*
* @author Tan Beng Suang
* @date 02-Sep-2005
* @version 1.0.1.0
*/
public class MenuFormController extends BaseFormController {
private MenuManager menuManager;
private RoleManager roleManager;
/**
* Returns the menuManager.
* @return MenuManager
*/
public MenuManager getMenuManager () {
return menuManager;
}
/**
* Sets the menuManager.
* @param menuManager The menuManager to set.
*/
public void setMenuManager (MenuManager menuManager) {
this.menuManager = menuManager;
}
/**
* Returns the roleManager.
* @return RoleManager
*/
public RoleManager getRoleManager () {
return roleManager;
}
/**
* Sets the roleManager.
* @param roleManager The roleManager to set.
*/
public void setRoleManager (RoleManager roleManager) {
this.roleManager = roleManager;
}
//----------------------------------------------------------------------
// ----------------------------------------------------------------------
/**
* First to be called.
*/
public ModelAndView processFormSubmission (HttpServletRequest request,
HttpServletResponse response, Object command, BindException errors)
throws Exception {
// if the request is "Cancel"
if (request.getParameter ("cancel") != null) {
String parentId = request.getParameter ("parentId");
if (parentId.equals("-1")) {
return new ModelAndView (new RedirectView ("listMenus.action"));
}
else {
return new ModelAndView (new RedirectView ("editMenu.action?menuId=" +
parentId + "&method=Edit"));
}
}
return super.processFormSubmission (request, response, command, errors);
}
/**
* Next to be called if processFormSubmission method called the
* super.processFormSubmission
*/
public ModelAndView onSubmit (HttpServletRequest request,
HttpServletResponse response, Object command, BindException errors)
throws Exception {
Menu menu = (Menu) command;
Locale locale = request.getLocale ();
if (request.getParameter ("delete") != null) {
//request to delete role.
this.getMenuManager().removeMenu(menu.getId());
saveMessage (request, getText ("menu.deleted", menu.getName(),
locale));
String parentId = request.getParameter ("parentId");
if (parentId.equals("-1")) {
return new ModelAndView (new RedirectView ("listMenus.action"));
}
else {
return new ModelAndView (new RedirectView ("editMenu.action?menuId=" +
parentId + "&method=Edit"));
}
}
else {
String[] menuRoles = request.getParameterValues ("menuRoles");
if (menuRoles != null) {
// for some reason, Spring seems to hang on to the roles in
// the User object, even though isSessionForm() == false
menu.getRoles ().clear ();
for (int i = 0; i < menuRoles.length; i++) {
String roleName = menuRoles[i];
menu.addRole (this.getRoleManager().getRole (roleName));
}
}
else {
menu.getRoles ().clear ();
}
if (StringUtils.equals (request.getParameter ("method"), "Add")) {
this.getMenuManager().saveMenu (menu);
String parentId = request.getParameter ("parentId");
if (!parentId.equals("-1")) {
Menu parent = this.getMenuManager().getMenu(parentId);
parent.addMenuItem(menu);
this.getMenuManager().saveMenu (parent);
}
}
else {
this.getMenuManager().saveMenu(menu);
}
if (StringUtils.equals (request.getParameter ("method"), "Edit")) {
saveMessage (request, getText ("menu.saved", menu.getName (),
locale));
}
else {
saveMessage (request, getText ("menu.added", menu.getName (), locale));
}
return new ModelAndView (new RedirectView ("editMenu.action?menuId=" + menu.getId () + "&method=Edit"));
}
}
/**
* calling in case of validation errors, to show the form view again.
*
*/
protected ModelAndView showForm (HttpServletRequest request,
HttpServletResponse response, BindException errors) throws Exception {
// prevent ordinary users from calling a GET on editUser.html
// unless a bind error exists.
if ((request.getRequestURI ().indexOf ("editMenu") > -1)
&& (!request.isUserInRole (mcap.core.user.util.NameConstants.ADMIN_ROLE)
&& (errors.getErrorCount () == 0) &&
(request.getRemoteUser () != null))) {
response.sendError (HttpServletResponse.SC_FORBIDDEN);
return null;
}
return super.showForm (request, response, errors);
}
/**
* Retrieve a backing object for the current form from the given request.
*/
protected Object formBackingObject (HttpServletRequest request)
throws Exception {
Menu menu = null;
if (StringUtils.equals (request.getParameter ("method"), "Add")) {
menu = new Menu ();
menu.setParentId (request.getParameter("parentId"));
}
else {
String id = request.getParameter ("menuId");
menu = this.getMenuManager().getMenu(id);
}
return menu;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?