roleformcontroller.java
来自「Java的框架」· Java 代码 · 共 188 行
JAVA
188 行
package mcaps.core.user.webapp.controller;
import java.util.HashSet;
import java.util.Locale;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import mcap.core.base.webapp.controller.BaseFormController;
import mcap.core.user.model.Role;
import mcap.core.user.service.RoleExistsException;
import mcap.core.user.service.RoleManager;
import mcap.core.user.util.NameConstants;
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 RoleManager to
* handle request to retrieve/persist Role info to data store.
* @author Tan Beng Suang
* @date 30-Aug-2005
* @version 1.0.1.0
*/
public class RoleFormController extends BaseFormController {
private RoleManager roleManager;
/**
* 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) {
if (!StringUtils.equals (request.getParameter ("from"), "list")) {
return new ModelAndView (getCancelView ());
}
else {
return new ModelAndView (getSuccessView ());
}
}
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 {
Role role = (Role) command;
Locale locale = request.getLocale ();
if (request.getParameter ("delete") != null) {
// request to delete role.
this.getRoleManager ().removeRole (role.getName ());
saveMessage (request, getText ("role.deleted", role.getName (), locale));
return new ModelAndView (getSuccessView ());
}
else {
String[] roleUsers = request.getParameterValues ("roleUsers");
role.getUsers ().clear ();
if (roleUsers != null) {
Set users = new HashSet ();
for (int i = 0; i < roleUsers.length; i++) {
String username = roleUsers[i];
users.add (getUserManager ().getUser (username));
}
//force acegi to reload the user's roles.
role.setUsers (users);
}
// try saving the role information.
try {
this.getRoleManager ().saveRole (role);
}
catch (RoleExistsException e) {
errors.rejectValue ("name", "errors.existing.role", new Object[] { role
.getName () }, "duplicate role");
if (StringUtils.equals (request.getParameter ("method"), "Add"))
role.setVersion(null);
return showForm (request, response, errors);
}
if (StringUtils.equals (request.getParameter ("method"), "Add")) {
saveMessage (request, getText ("role.saved", role.getName (), locale));
// return to main Menu
return new ModelAndView (new RedirectView ("listRoles.action"));
}
else {
saveMessage (request, getText ("role.updated", role.getName (), locale));
return new ModelAndView (new RedirectView ("listRoles.action"));
}
}
}
/**
* 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 ("editRole") > -1)
&& (!request.isUserInRole (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 {
String name = request.getParameter ("name");
Role role = null;
if (!StringUtils.isBlank (name)
&& !"".equals (request.getParameter ("version"))) {
role = this.getRoleManager ().getRole (name);
}
else {
role = new Role ();
}
return role;
}
protected void onBind (HttpServletRequest request, Object command)
throws Exception {
// if the user is being deleted, turn off validation
if (request.getParameter ("delete") != null) {
super.setValidateOnBinding (false);
}
else {
super.setValidateOnBinding (true);
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?