<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    鐵手劍譜

    上善若水
    數(shù)據(jù)加載中……
    Struts秘籍之第1段:第2.8式. 有選擇地禁止Action

    第2.8式. 有選擇地禁止Action

    問(wèn)題

    你想要是使用一個(gè)定制屬性來(lái)禁止(disable)一個(gè),并且該屬性能夠在struts-config.xml文件的action元素中進(jìn)行設(shè)置;轉(zhuǎn)發(fā)到該disabled action 的任何請(qǐng)求都會(huì)得到"under construction" 頁(yè)面。

    動(dòng)作要領(lǐng)

    創(chuàng)建一個(gè)定制的ActionMapping擴(kuò)展(如Example 2-16) ,它可以提供一個(gè)boolean 類(lèi)型的屬性來(lái)指示action 是否被禁止。

    Example 2-16. 定制ActionMapping

     

    import org.apache.struts.action.ActionMapping;

    public class DisablingActionMapping extends ActionMapping {

        
    private String disabled;
        
    private boolean actionDisabled = false;
        
        
    public String getDisabled( ) {
            
    return disabled;
        }


        
    public void setDisabled(String disabled) {
            
    this.disabled = disabled;
            actionDisabled 
    = new Boolean(disabled).booleanValue( );
        }

        
        
    public boolean isActionDisabled( ) {
            
    return actionDisabled;
        }

    }

    這個(gè)action mapping 就可以在struts-config.xml文件中指定。如果你想要一個(gè)action被禁止,你可以設(shè)置disabled屬性為T(mén)rue :

    <action-mappings type="com.oreilly.strutsckbk.DisablingActionMapping">

      
    <!-- Edit mail subscription -->
      
    <action    path="/editSubscription"
                 type
    ="org.apache.struts.webapp.example.EditSubscriptionAction"
            attribute
    ="subscriptionForm"
                scope
    ="request"
             validate
    ="false">
        
    <set-property property="disabled" value="true"/>
        
    <forward name="failure"              path="/mainMenu.jsp"/>
        
    <forward name="success"              path="/subscription.jsp"/>
      
    </action>

    然后創(chuàng)建一個(gè)定制的RequestProcessor,比如Example 2-17中的那個(gè),它可以處理DisablingActionMapping.

    Example 2-17. 處理對(duì)被禁止的actions的請(qǐng)求

     

    import java.io.IOException;

    import javax.servlet.ServletException;
    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.RequestProcessor;

    public class CustomRequestProcessor extends RequestProcessor {
        
        
    protected ActionForward processActionPerform(HttpServletRequest request, 
               HttpServletResponse response, Action action,ActionForm form, 
                ActionMapping mapping) throws IOException, ServletException 
    {
            ActionForward forward 
    = null;
            
    if (!(mapping instanceof DisablingActionMapping)) {
                forward 
    = super.processActionPerform( request, response, 
                                                        action, form, mapping);
            }

            
    else {
                DisablingActionMapping customMapping 
    = 
                      (DisablingActionMapping) mapping;
                
    if (customMapping.isActionDisabled( )) {
                    forward 
    = customMapping.findForward("underConstruction");
                }

                
    else {
                    forward 
    = super.processActionPerform( request, response,
                                                             action, form, mapping);
                }

            }

            
    return forward;
        }

    }

    動(dòng)作變化

    Struts 通過(guò)兩種機(jī)制來(lái)對(duì)action提供定制屬性的能力。

    首先,每個(gè)Struts action 都可以通過(guò)一個(gè)通用參數(shù)parameter值來(lái)傳遞:


    <action    path="/editRegistration"
               type
    ="org.apache.struts.webapp.example.EditRegistrationAction"
          attribute
    ="registrationForm"
              scope
    ="request"
           validate
    ="false"
           parameter
    ="disabled">
      
    <forward name="success" path="/registration.jsp"/>
    </action>

    其次,在Action的實(shí)現(xiàn)中,parameter的值可以通過(guò)下面的代碼來(lái)訪問(wèn):

    String parameterValue = mapping.getParameter(  );

    然而,某些Struts所提供的子類(lèi),比如DispatchAction 已經(jīng)使用了parameter屬性。因?yàn)槟阒豢梢灾付ㄒ粋€(gè)parameter屬性,所以,如果你使用這些預(yù)定義的Action子類(lèi),便不能再將parameter用作定制屬性值。

    對(duì)于完整的擴(kuò)展,你可以擴(kuò)展ActionMapping類(lèi),可選地為你所選擇的定制屬性提供accessor 和 mutator :

     

    package com.oreilly.strutsckbk;

    import org.apache.struts.ActionMapping

    public class MyCustomActionMapping extends ActionMapping {
        
    private String customValue;
        
    public String getCustomValue( ) return customValue; }
        
    public String setCustomValue(String s) { customValue = s; }
    }


    你可以在struts-config.xml文件中引用這個(gè)擴(kuò)展。如果定制action mapping 將被用于所有action,請(qǐng)將action-mappings元素的type屬性設(shè)置為定制擴(kuò)展的全限定類(lèi)名:

     

    <action-mappings type="com.oreilly.strutsckbk.MyCustomActionMapping">


    否則,為定制action mapping所需的action元素設(shè)置className屬性。這兩種情況下,set-property元素都可以用來(lái)針對(duì)特定的action元素為定制擴(kuò)展中的JavaBean 屬性設(shè)置值:

    <action    path="/someAction"
               type
    ="com.oreilly.strutsckbk.SomeAction"
          className
    ="com.oreilly.strutsckbk.MyCustomActionMapping">
      
    <set-property property="customValue" value="some value"/>
    </action>

    這種方案使用一個(gè)定制的RequestProcessor來(lái)處理定制ActionMapping的disabled 屬性。如果你對(duì)特定的action使用定制的ActionMapping,你可以在Action.execute()訪法中直接訪問(wèn)定值A(chǔ)ctionMapping的屬性:

    boolean disabled = ((DisablingActionMapping) mapping).isActionDisabled(  );
    if (disabled) return mapping.findForward("underConstruction");

    相關(guān)招式

    你也可以使用授權(quán)(authorization) servlet 過(guò)濾器來(lái)解決這個(gè)問(wèn)題。那是第11.8式的動(dòng)作。

    posted on 2005-05-19 13:07 鐵手 閱讀(1781) 評(píng)論(1)  編輯  收藏 所屬分類(lèi): JavaStruts系列

    評(píng)論

    # Struts 秘籍(CookBook)[TrackBack] 2005-11-12 18:29 阿泠

    本系列源改編自O(shè)'Reily的Strus Cookbook
    [引用提示]阿泠引用了該文章, 地址: http://blog.donews.com/inclear/archive/2005/11/12/624363.aspx
    主站蜘蛛池模板: 国产成人亚洲综合色影视| 一本岛v免费不卡一二三区| 亚洲中文字幕第一页在线| 99在线精品视频观看免费| a毛片久久免费观看| 美女被暴羞羞免费视频| 亚洲视频在线观看2018| 亚洲AV无码国产精品麻豆天美| 亚洲?V无码成人精品区日韩| 女人与禽交视频免费看| 99在线观看免费视频| 在线观看肉片AV网站免费| 国产成人无码精品久久久免费| 在线观看亚洲免费视频| 国产AV旡码专区亚洲AV苍井空| 亚洲日产2021三区| 中文字幕亚洲综合久久| 亚洲国产一区二区三区青草影视| 国产精品V亚洲精品V日韩精品 | 免费人成视频x8x8入口| 成人毛片免费网站| 一个人在线观看视频免费| **aaaaa毛片免费| 日本免费大黄在线观看| 日本在线免费观看| 久久久久免费看成人影片| 99免费视频观看| 114级毛片免费观看| 麻豆高清免费国产一区| 国产成人精品免费视频动漫| 国产高清免费视频| 歪歪漫画在线观看官网免费阅读| 91在线视频免费91| 性感美女视频在线观看免费精品| 成人黄18免费视频| 日韩成人免费在线| 夜色阁亚洲一区二区三区| 在线日韩日本国产亚洲| 亚洲av福利无码无一区二区| 99久久亚洲综合精品成人网| 亚洲成年人免费网站|