文章出處

未知處理器

從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>

 


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()