struts编程式异常--html:error与html:message
struts编程式异常过程:
?截获异常信息;创建异常信息;传递异常信息;转向相应页面
?
<html:errors/>显示异常信息
??
<html:messages id="msg" message="true"><bean:write name="msg"/></html:messages>
当message="true"时输出的是程序中的message信息,而message为false或空时则默认输出异常信息即与html:error一样
?如下:
package com.lwf.struts.action;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.Action;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import org.apache.struts.action.ActionMessage;import org.apache.struts.action.ActionMessages;import com.lwf.struts.form.LogonForm;import com.lwf.struts.util.UserManageEntity;import com.lwf.struts.util.UserNotFoundException;public class LogonAction extends Action {public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception {ActionMessages errors = new ActionMessages();ActionForward forward = new ActionForward();LogonForm logonForm = (LogonForm)form;String name = logonForm.getUsername();String pwd = logonForm.getPassword();try {UserManageEntity.UserManager(name);errors.add("logonerror1", new ActionMessage("error.login.user"," myerrmsg"));this.saveMessages(request, errors);request.getSession().setAttribute("user", logonForm);forward = mapping.findForward("success");} catch (UserNotFoundException e) {errors.add("logonerror2", new ActionMessage("error.login.again"," error2"));this.saveErrors(request, errors);forward = mapping.findForward("error");}return forward;}}?
?
注意程序中:
saveMessages与saveErrors两个方法的调用
?
package com.lwf.struts.util;public class UserManageEntity {public static void UserManager(String username) throws UserNotFoundException{if(username!=null && !username.equals("admin")){throw new UserNotFoundException();}}}?
package com.lwf.struts.util;public class UserNotFoundException extends Exception {public UserNotFoundException(){}public UserNotFoundException(String message){super(message);}}?
?
struts还规定在资源文件中定义以下属性
errors.header= <UL>errors.prefix= <LI>errors.suffix= </LI>errors.footer= </UL>
?
如果连续有多条异常信息那么每一条会显示在LI中,多条信息会显示在UL中.
如果我们想每一条异常信息显示为红色字体那么可以这样做:
errors.header= <UL>errors.prefix= <LI><font color="red">errors.suffix= </LI></font>errors.footer= </UL>
?