文章出處
文章列表
未知處理器
從struts2.1 開始 ,struts2配置文件的DTD中增加了<unknown-handler-stack…/>和<unknown-handler-ref…/>,這個元素用于配置Struts2的未知處理器。
當用請求未知Action、或指定action里的未知方法、或action 處理結束之后返回一個未知result ,struts2允許使用處理器來處理這些方法。
未知處理器需要實現 UnknownHandler 接口,該接口里包含來了3個方法:
HandleUnknownAction:用戶請求未知Action時,該方法見會被回調。
HandleUnknownActionMethod: 用戶請求指定Action的未知方法時,該方法將會被回調。
HandleUnKnownResult: action處理結束之后返回一個位置Result時,該方法將會被回調。
代碼如下:
package com.struts2.action; import org.apache.struts2.dispatcher.ServletDispatcherResult; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.Result; import com.opensymphony.xwork2.UnknownHandler; import com.opensymphony.xwork2.XWorkException; import com.opensymphony.xwork2.config.entities.ActionConfig; public class MyUnKnownHandler implements UnknownHandler{ /** * @param namespace 用戶請求的action所在的命名空間 * @param actionName 用戶請求的Action的名字 * @return 該Action最后生成的ActionConfig,可以返回null */ @Override public ActionConfig handleUnknownAction(String namespace, String actionName) throws XWorkException { // TODO Auto-generated method stub return null; } /** * @param action 用戶請求的Action對象 * @param methodName 用戶請求的Action 的方法名 * @return 該Action 的該方法處理后返回的Result。 */ @Override public Object handleUnknownActionMethod(Object action, String methodName) throws NoSuchMethodException { // TODO Auto-generated method stub return null; } /** * @param actionContext 該result所在ActionContext * @param actionName 該result所在的Action名 * @param actionCofig 該result所在ActionContext * @param resultCode 該result所對應的邏輯視圖字符串 * @return 將要被處理的結果,可以返回null */ @Override public Result handleUnknownResult(ActionContext actionContext, String actionName, ActionConfig actionConfig, String resultCode) throws XWorkException { // TODO Auto-generated method stub actionContext.put("action", actionName); actionContext.put("result", resultCode); return new ServletDispatcherResult("/unknownResult.jsp"); } }
相關的配置:
<!-- 使用bean 定義一個UnknownHandler --> <bean name="yeekuHandler" type="com.opensymphony.xwork2.UnknownHandler" class="com.struts2.action.MyUnKnownHandler"></bean> //定義未值處理棧 <unknown-handler-stack> <unknown-handler-ref name="yeekuHandler"></unknown-handler-ref> </unknown-handler-stack>
文章列表
全站熱搜