1 在逻辑处理代码中 保存逻辑错误的全局信息
2 在JSP页面中 使用和来输出全局信息
以登录验证为例
1 登录时 验证是否登录成功 LoginAction
在类LoginAction的execute()中 如果登录不成功 或代码抛出异常 此时保存一个全局错误信息
部分代码
- public ActionForward execute(ActionMapping mapping, ActionForm form,
- HttpServletRequest request, HttpServletResponse response)
- throws Exception {
- ActionErrors errors = new ActionErrors();
- ActionForward forward = new ActionForward();
- LoginForm loginForm = (LoginForm) form;
- try {
- // get parameters
- String username = loginForm.getUsername();
- // invalidate the original session if exists
- HttpSession session = request.getSession(false);
- if (session != null) {
- session.invalidate();
- }
- // create a new session for the user
- session = request.getSession(true);
- // login
- boolean isValid = valid(request, loginForm);
- if (isValid) {
- session.setAttribute(Constants.USERNAME_KEY, username);
- log.info("User " + username + " login.");
- } else {
- errors.add(ActionErrors.GLOBAL_MESSAGE, new ActionMessage(
- "login.message.failed"));
- }
- } catch (Exception e) {
- errors.add(ActionErrors.GLOBAL_MESSAGE, new ActionMessage(
- "login.message.failed"));
- }
- // If a message is required, save the specified key(s)
- // into the request for use by the tag.
- if (!errors.isEmpty()) {
- saveErrors(request, errors);
- request.setAttribute("loginFormBean", loginForm);
- forward = mapping.findForward(Constants.FAILURE_KEY);
- } else {
- forward = mapping.findForward(Constants.SUCCESS_KEY);
- }
- // Finish with
- return (forward);
- }
2 在上面的代码中 添加一个资源引用的标签 我们在ApplicationResources_temp.properties中添加如下
- # loginAction
- login.message.failed=用户名或者密码不存在!
并使用命令native2ascii转换更新到ApplicationResources_zh_CN.properties 同样的 也需要在ApplicationResources.properties中添加英文的标签
3 再JSP页面login.jsp中输出这个全局错误信息
- <html:errors property="org.apache.struts.action.GLOBAL_MESSAGE" />
阅读(1314) | 评论(0) | 转发(0) |