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>