@ActionMethod( name = "signon", successView = "index.vhtml", errorView = "signon.vhtml", parameterClass = SignonParameterObject.class, httpMethod = ActionMethod.HttpMethod.POST) public void doPostSignon(ActionContext actionContext) throws Exception { SignonParameterObject invocation = (SignonParameterObject) actionContext.getParameterObject(); Account account = (Account) loginService.login( actionContext.getSessionContext(), this, invocation.getUsername(), invocation.getPassword()); if (account == null) { String msg = "Invalid username or password. Signon failed"; PageContext pageContext = actionContext.getPageContext(); pageContext.setAttribute("errorMessage", msg); throw new Exception(msg); } else { SessionContext sessionContext = actionContext.getSessionContext(); sessionContext.setAttribute(ACCOUNT_SESSION_KEY, account); } }
@ActionMethod( name = "signoff", successView = "index.vhtml", httpMethod = ActionMethod.HttpMethod.GET) public void doGetSignoff(ActionContext actionContext) throws Exception { SessionContext sessionContext = actionContext.getSessionContext(); sessionContext.clearAttributes(); actionContext.destroySessionContext(); }
@ActionMethod( name = "edit", successView = "index.vhtml", errorView = "EditAccount.vhtml", parameterClass = EditAccountParameterObject.class, httpMethod = ActionMethod.HttpMethod.POST) public void doPostEdit(ActionContext actionContext) throws Exception { EditAccountParameterObject invocation = (EditAccountParameterObject) actionContext.getParameterObject(); SessionContext sessionContext = actionContext.getSessionContext(); Account account = (Account) sessionContext.getAttribute(ACCOUNT_SESSION_KEY); Account newAccount = new Account(); newAccount.setBannerName(account.getBannerName()); newAccount.setUsername(account.getUsername()); newAccount.setStatus(account.getStatus()); newAccount.setPassword(invocation.getPassword()); newAccount.setAddress1(invocation.getAddress1()); newAccount.setAddress2(invocation.getAddress2()); newAccount.setBannerOption(invocation.getBannerOption()); newAccount.setCity(invocation.getCity()); newAccount.setCountry(invocation.getCountry()); newAccount.setEmail(invocation.getEmail()); newAccount.setFavouriteCategoryId(invocation.getFavouriteCategoryId()); newAccount.setFirstName(invocation.getFirstName()); newAccount.setLanguagePreference(invocation.getLanguagePreference()); newAccount.setLastName(invocation.getLastName()); newAccount.setListOption(invocation.getListOption()); newAccount.setPassword(invocation.getPassword()); newAccount.setPhone(invocation.getPhone()); newAccount.setState(invocation.getState()); newAccount.setZip(invocation.getZip()); try { accountBO.updateAccount(newAccount); sessionContext.setAttribute(ACCOUNT_SESSION_KEY, newAccount); } catch (Exception e) { // update failed throw e; } }
/** * 在 doPostEdit 发生异常时,通过该方法设置 PageContext account, 以便跳转到 errorView 时,可以预设数据 * * @param actionContext invocationContext */ public void doActionFailed(ActionContext actionContext) { if (actionContext.getActionMethod().getName().equals("doPostEdit")) { SessionContext sessionContext = actionContext.getSessionContext(); Account account = (Account) sessionContext.getAttribute(ACCOUNT_SESSION_KEY); PageContext pageContext = actionContext.getPageContext(); pageContext.setAttribute("account", account); pageContext.setAttribute("languages", languages); List<Category> categories = categoryBO.getCategoryList(); pageContext.setAttribute("categories", categories); } else if (actionContext.getActionMethod().getName().equals("doPostCreate")) { NewAccountParameterObject invocation = (NewAccountParameterObject) actionContext.getParameterObject(); Account newAccount = EntityFactory.newEntityObject(Account.class); newAccount.setUsername(invocation.getUsername()); newAccount.setStatus("OK"); newAccount.setPassword(invocation.getPassword()); newAccount.setAddress1(invocation.getAddress1()); newAccount.setAddress2(invocation.getAddress2()); newAccount.setBannerOption(invocation.getBannerOption()); newAccount.setCity(invocation.getCity()); newAccount.setCountry(invocation.getCountry()); newAccount.setEmail(invocation.getEmail()); newAccount.setFavouriteCategoryId(invocation.getFavouriteCategoryId()); newAccount.setFirstName(invocation.getFirstName()); newAccount.setLanguagePreference(invocation.getLanguagePreference()); newAccount.setLastName(invocation.getLastName()); newAccount.setListOption(invocation.getListOption()); newAccount.setPassword(invocation.getPassword()); newAccount.setPhone(invocation.getPhone()); newAccount.setState(invocation.getState()); newAccount.setZip(invocation.getZip()); PageContext pageContext = actionContext.getPageContext(); pageContext.setAttribute("account", newAccount); try { doGetNewAccount(actionContext); } catch (Exception e) { logger.error("doActionFailed error.", e); } } }
@ActionMethod( name = "editaccount", successView = "EditAccount.vhtml", errorView = "signon.vhtml", httpMethod = ActionMethod.HttpMethod.GET) public void doGetEditAccount(ActionContext actionContext) throws Exception { SessionContext sessionContext = actionContext.getSessionContext(); Account account = (Account) sessionContext.getAttribute(ACCOUNT_SESSION_KEY); if (account == null) { throw new IllegalArgumentException("Not login, please login first!"); } PageContext pageContext = actionContext.getPageContext(); pageContext.setAttribute("account", account); pageContext.setAttribute("languages", languages); List<Category> categories = categoryBO.getCategoryList(); pageContext.setAttribute("categories", categories); }