⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 userformcontroller.java

📁 基于Maven的质量保证自动化环境配置和演示程序
💻 JAVA
字号:
package com.cib.webapp.controller;import org.springframework.security.AccessDeniedException;import org.springframework.security.Authentication;import org.springframework.security.AuthenticationTrustResolver;import org.springframework.security.AuthenticationTrustResolverImpl;import org.springframework.security.context.SecurityContext;import org.springframework.security.context.SecurityContextHolder;import org.apache.commons.lang.StringUtils;import com.cib.Constants;import com.cib.model.Role;import com.cib.model.User;import com.cib.service.RoleManager;import com.cib.service.UserExistsException;import com.cib.service.UserManager;import com.cib.webapp.util.RequestUtil;import org.springframework.validation.BindException;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.view.RedirectView;import org.springframework.mail.MailException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.util.Locale;/** * Implementation of <strong>SimpleFormController</strong> that interacts with * the {@link UserManager} to retrieve/persist values to the database. * * <p><a href="UserFormController.java.html"><i>View Source</i></a> * * @author <a href="mailto:matt@raibledesigns.com">Matt Raible</a> */public class UserFormController extends BaseFormController {    private RoleManager roleManager;    public void setRoleManager(RoleManager roleManager) {        this.roleManager = roleManager;    }        public UserFormController() {        setCommandName("user");        setCommandClass(User.class);    }    public ModelAndView processFormSubmission(HttpServletRequest request,                                              HttpServletResponse response,                                              Object command,                                              BindException errors)    throws Exception {        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);    }    public ModelAndView onSubmit(HttpServletRequest request,                                 HttpServletResponse response, Object command,                                 BindException errors)    throws Exception {        log.debug("entering 'onSubmit' method...");        User user = (User) command;        Locale locale = request.getLocale();        if (request.getParameter("delete") != null) {            getUserManager().removeUser(user.getId().toString());            saveMessage(request, getText("user.deleted", user.getFullName(), locale));            return new ModelAndView(getSuccessView());        } else {                        // only attempt to change roles if user is admin for other users,            // formBackingObject() method will handle populating            if (request.isUserInRole(Constants.ADMIN_ROLE)) {                String[] userRoles = request.getParameterValues("userRoles");                if (userRoles != null) {                    user.getRoles().clear();                    for (String roleName : userRoles) {                        user.addRole(roleManager.getRole(roleName));                    }                }            }            Integer originalVersion = user.getVersion();                        try {                getUserManager().saveUser(user);            } catch (AccessDeniedException ade) {                // thrown by UserSecurityAdvice configured in aop:advisor userManagerSecurity                log.warn(ade.getMessage());                response.sendError(HttpServletResponse.SC_FORBIDDEN);                return null;            } catch (UserExistsException e) {                errors.rejectValue("username", "errors.existing.user",                                   new Object[] {user.getUsername(), user.getEmail()}, "duplicate user");                // redisplay the unencrypted passwords                user.setPassword(user.getConfirmPassword());                // reset the version # to what was passed in                user.setVersion(originalVersion);                                return showForm(request, response, errors);            }            if (!StringUtils.equals(request.getParameter("from"), "list")) {                saveMessage(request, getText("user.saved", user.getFullName(), locale));                // return to main Menu                return new ModelAndView(new RedirectView("mainMenu.html"));            } else {                if (StringUtils.isBlank(request.getParameter("version"))) {                    saveMessage(request, getText("user.added", user.getFullName(), locale));                    // Send an account information e-mail                    message.setSubject(getText("signup.email.subject", locale));                    try {                        sendUserMessage(user, getText("newuser.email.message", user.getFullName(), locale),                                        RequestUtil.getAppURL(request));                    } catch (MailException me) {                        saveError(request, me.getCause().getLocalizedMessage());                    }                    return new ModelAndView(getSuccessView());                } else {                    saveMessage(request, getText("user.updated.byAdmin", user.getFullName(), locale));                }            }        }        return showForm(request, response, errors);    }    protected ModelAndView showForm(HttpServletRequest request,                                    HttpServletResponse response,                                    BindException errors)    throws Exception {        // If not an adminstrator, make sure user is not trying to add or edit another user        if (!request.isUserInRole(Constants.ADMIN_ROLE) && !isFormSubmission(request)) {            if (isAdd(request) || request.getParameter("id") != null) {                response.sendError(HttpServletResponse.SC_FORBIDDEN);                log.warn("User '" + request.getRemoteUser() + "' is trying to edit user with id '" +                         request.getParameter("id") + "'");                throw new AccessDeniedException("You do not have permission to modify other users.");            }        }        return super.showForm(request, response, errors);    }    protected Object formBackingObject(HttpServletRequest request)    throws Exception {        if (!isFormSubmission(request)) {            String userId = request.getParameter("id");            // if user logged in with remember me, display a warning that they can't change passwords            log.debug("checking for remember me login...");            AuthenticationTrustResolver resolver = new AuthenticationTrustResolverImpl();            SecurityContext ctx = SecurityContextHolder.getContext();            if (ctx.getAuthentication() != null) {                Authentication auth = ctx.getAuthentication();                if (resolver.isRememberMe(auth)) {                    request.getSession().setAttribute("cookieLogin", "true");                    // add warning message                    saveMessage(request, getText("userProfile.cookieLogin", request.getLocale()));                }            }            User user;            if (userId == null && !isAdd(request)) {                user = getUserManager().getUserByUsername(request.getRemoteUser());            } else if (!StringUtils.isBlank(userId) && !"".equals(request.getParameter("version"))) {                user = getUserManager().getUser(userId);            } else {                user = new User();                user.addRole(new Role(Constants.USER_ROLE));            }            user.setConfirmPassword(user.getPassword());            return user;        } else if (request.getParameter("id") != null && !"".equals(request.getParameter("id"))                && request.getParameter("cancel") == null) {            // populate user object from database, so all fields don't need to be hidden fields in form            return getUserManager().getUser(request.getParameter("id"));        }        return super.formBackingObject(request);    }    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);        }    }    protected boolean isAdd(HttpServletRequest request) {        String method = request.getParameter("method");        return (method != null && method.equalsIgnoreCase("add"));    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -