﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Meta Model Enabling-随笔分类-WebWork</title><link>http://www.blogjava.net/frogfool/category/17595.html</link><description>元模型使能</description><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 20:20:58 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 20:20:58 GMT</pubDate><ttl>60</ttl><item><title>ExceptionInterceptor</title><link>http://www.blogjava.net/frogfool/archive/2006/11/22/82912.html</link><dc:creator>frogfool</dc:creator><author>frogfool</author><pubDate>Wed, 22 Nov 2006 14:57:00 GMT</pubDate><guid>http://www.blogjava.net/frogfool/archive/2006/11/22/82912.html</guid><wfw:comment>http://www.blogjava.net/frogfool/comments/82912.html</wfw:comment><comments>http://www.blogjava.net/frogfool/archive/2006/11/22/82912.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/frogfool/comments/commentRss/82912.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/frogfool/services/trackbacks/82912.html</trackback:ping><description><![CDATA[
		<p>package com.gxlu.common.web.webwork.intercepter;</p>
		<p>import java.io.StringWriter;<br />import java.util.HashMap;<br />import java.util.Iterator;<br />import java.util.Map;<br />import java.util.Properties;</p>
		<p>import org.apache.commons.logging.Log;<br />import org.apache.commons.logging.LogFactory;</p>
		<p>import com.gxlu.common.web.webwork.action.AjaxJSONAction;<br />import com.gxlu.common.web.webwork.action.AjaxUpdaterAction;<br />import com.gxlu.common.web.webwork.action.AjaxXMLAction;<br />import com.opensymphony.webwork.ServletActionContext;<br />import com.opensymphony.xwork.Action;<br />import com.opensymphony.xwork.ActionInvocation;<br />import com.opensymphony.xwork.interceptor.Interceptor;</p>
		<p>/**<br /> * Interceptor to handle Exceptions thrown by Actions.<br /> * &lt;p&gt;<br /> * &lt;a href="ExceptionHandlerInterceptor.java.html"&gt; &lt;i&gt;View Source &lt;/i&gt; &lt;/a&gt;<br /> * &lt;/p&gt;<br /> * <br /> */<br />public class ExceptionInterceptor implements Interceptor {<br /> public static final String EXCEPTION = "exception";</p>
		<p> protected final Log logger = LogFactory.getLog(getClass());</p>
		<p> private Map exceptionMappings;</p>
		<p> /**<br />  * Set the mappings between exception class names and result names.<br />  * <br />  * @param mappings<br />  *        fully qualified exception class names as keys, and result names as<br />  *        values<br />  */<br /> public void setExceptionMappings(Properties mappings) throws ClassNotFoundException {<br />  this.exceptionMappings = new HashMap();</p>
		<p>  for (Iterator it = mappings.keySet().iterator(); it.hasNext();) {<br />   String exceptionClassName = (String) it.next();<br />   String viewName = mappings.getProperty(exceptionClassName);<br />   Class exceptionClass = Class.forName(exceptionClassName, true, Thread.currentThread().getContextClassLoader());<br />   this.exceptionMappings.put(exceptionClass, viewName);<br />  }<br /> }</p>
		<p> /**<br />  * Invoke action and if an exception occurs, route it to the mapped result.<br />  */<br /> public String intercept(ActionInvocation invocation) throws Exception {<br />  String result = null;</p>
		<p>  try {<br />   result = invocation.invoke();<br />  } catch (Throwable e) {<br />   logger.error(e);<br />   //<br />   result = EXCEPTION;<br />   //<br />   StringWriter writer = new StringWriter();<br />   e.printStackTrace(new java.io.PrintWriter(writer));<br />   ServletActionContext.getRequest().setAttribute("_exception_stack_trace_", writer.toString());<br />   ServletActionContext.getRequest().setAttribute("_exception_message_", e.getMessage());<br />   writer = null;<br />   Action action = invocation.getAction();<br />   if(action instanceof AjaxJSONAction) {    <br />    return "exception.json";<br />   } else if(action instanceof AjaxXMLAction) {<br />    return "exception.xml";<br />   } else if(action instanceof AjaxUpdaterAction) {<br />    return "exception.updater";<br />   }<br />   /**<br />    * // check for specific mappings if (this.exceptionMappings !=<br />    * null) { for (Iterator it =<br />    * this.exceptionMappings.keySet().iterator(); it.hasNext();) {<br />    * Class exceptionClass = (Class) it.next(); if<br />    * (exceptionClass.isInstance(ex)) { result = (String)<br />    * this.exceptionMappings.get(exceptionClass); } } } if (null ==<br />    * result || "".equals(result)) { result = EXCEPTION; }<br />    */<br />  }<br />  return result;</p>
		<p> }</p>
		<p> public void destroy() {<br /> }</p>
		<p> public void init() {<br /> }<br />}</p>
<img src ="http://www.blogjava.net/frogfool/aggbug/82912.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/frogfool/" target="_blank">frogfool</a> 2006-11-22 22:57 <a href="http://www.blogjava.net/frogfool/archive/2006/11/22/82912.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>