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

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

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

    云自無心水自閑

    天平山上白云泉,云自無心水自閑。何必奔沖山下去,更添波浪向人間!
    posts - 288, comments - 524, trackbacks - 0, articles - 6
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    appfuse 1.9.4 學(xué)習(xí)心得 III

    Posted on 2007-03-08 09:51 云自無心水自閑 閱讀(1630) 評論(0)  編輯  收藏 所屬分類: Java心得體會Appfuse

    index.jsp重定向到mainMenu.html,但其實mainMenu.html并不是一個真正的存在的Html頁面。
    在appfuse中,Struts的Action的后綴使用的是不是常見的.do,而使用的是.html。
    見Web.xml:

    ??? <servlet-mapping>
    ??????? <servlet-name>action</servlet-name>
    ??????? <url-pattern>*.html</url-pattern>
    ??? </servlet-mapping>


    因此,查看struts-config.xml,發(fā)現(xiàn)/menuMenu只是簡單地Forward到/WEB-INF/pages/mainMenu.jsp。
    所以,在此處顯示的內(nèi)容是mainMenu.jsp的內(nèi)容。

    mainMenu.jsp頁面中的內(nèi)容不多,只有一個簡單的列表,包含兩個鏈接:編輯信息、上傳文件。

    現(xiàn)在需要仔細研究一下菜單的顯示了。可以看到在menuMenu.jsp和login.jsp中都沒有菜單的定義和顯示。其實菜單的定義和顯示還是在前面說到的default.jsp中。
    default.jsp中如下一段代碼:

    ??????????? <c:set var="currentMenu" scope="request"><decorator:getProperty property="meta.menu"/></c:set>
    ??????????? <c:if test="${currentMenu == 'AdminMenu'}">
    ??????????? <div id="sub">
    ??????????????? <menu:useMenuDisplayer name="Velocity" config="WEB-INF/classes/cssVerticalMenu.vm" permissions="rolesAdapter">
    ??????????????????? <menu:displayMenu name="AdminMenu"/>
    ??????????????? </menu:useMenuDisplayer>
    ??????????? </div>
    ??????????? </c:if>

    ??????????? <div id="nav">
    ??????????????? <div class="wrapper">
    ??????????????????? <h2 class="accessibility">Navigation</h2>
    ??????????????????? <jsp:include page="/common/menu.jsp"/>
    ??????????????? </div>
    ??????????????? <hr />
    ??????????? </div><!-- end nav -->

    首先從頁面中取出meta.menu的值,這個值在login.jsp中是: <meta name="menu" content="Login"/>
    在mainMenu.jsp中是:<meta name="menu" content="MainMenu"/>
    所以,login.jsp中 test="${currentMenu == 'AdminMenu'}" 都不通過。每一部分的內(nèi)容在這兩個頁面中都不顯示。

    下面的一部分是common/menu.jsp,主要是一個menu:useMenuDisplayer
    顯示的菜單第一個進行了判斷,<c:if test="${empty pageContext.request.remoteUser}">
    查看Jsp容器中維護的認(rèn)證中當(dāng)前用戶是否為空,如果成功登錄,則這個值即為登錄用戶名,否則為空。
    也就是說,如果沒有成功登錄,則會顯示登錄菜單<li><a href="<c:url value="/login.jsp"/>" class="current"><fmt:message key="login.title"/></a></li>。

    除了剛才的第一個登錄項以外,還有5條菜單菜單項,這5個菜單項使用的是struts-menu的標(biāo)準(zhǔn)用法,而不是象剛才那樣直接HTML的輸出。
    ??? <menu:displayMenu name="MainMenu"/>
    ??? <menu:displayMenu name="UserMenu"/>
    ??? <menu:displayMenu name="FileUpload"/>
    ??? <menu:displayMenu name="AdminMenu"/>
    ??? <menu:displayMenu name="Logout"/>
    查看menu-config.xml,可以發(fā)現(xiàn),只有第一的菜單項MainMenu沒有定義角色

    < MenuConfig >
    ????
    < Displayers >
    ????????
    < Displayer? name ="Velocity" ?type ="net.sf.navigator.displayer.VelocityMenuDisplayer" />
    ????
    </ Displayers >
    ????
    < Menus >
    ????????
    < Menu? name ="MainMenu" ?title ="mainMenu.title" ?page ="/mainMenu.html" />
    ????????
    < Menu? name ="UserMenu" ?title ="menu.user" ?description ="User?Menu" ?forward ="editProfile" ?roles ="admin,user" />
    ????????
    < Menu? name ="FileUpload" ?title ="menu.selectFile" ?description ="File?Upload" ?width ="100" ?forward ="selectFile" ?roles ="admin,user" />
    ????????
    < Menu? name ="AdminMenu" ?title ="menu.admin" ?description ="Admin?Menu" ?roles ="admin" ?width ="120" ?forward ="viewUsers" >
    ????????????
    < Item? name ="ViewUsers" ?title ="menu.admin.users" ?forward ="viewUsers" />
    ????????????
    < Item? name ="ActiveUsers" ?title ="mainMenu.activeUsers" ?action ="activeUsers" />
    ????????????
    < Item? name ="ReloadContext" ?title ="menu.admin.reload" ?action ="reload" />
    ????????????
    < Item? name ="FlushCache" ?title ="menu.flushCache" ?action ="flush" />
    ????????????
    < Item? name ="Clickstream" ?title ="menu.clickstream" ?page ="/clickstreams.jsp" />
    ????????
    </ Menu >
    ????????
    < Menu? name ="Logout" ?title ="user.logout" ?page ="/logout.jsp" ?roles ="admin,user" />
    ????
    </ Menus >
    </ MenuConfig >


    因此,在login.jsp頁面也能顯示此菜單項。
    而剩下需要角色的菜單,就需要登錄后,根據(jù)角色的設(shè)置來顯示相應(yīng)的菜單了。

    比如:mraible用戶是admin角色,可以顯示全部菜單。tomcat用戶是user角色,就看不到AdminMenu了。

    ?



    主站蜘蛛池模板: 久久成人永久免费播放| 亚洲色欲久久久综合网东京热| 亚洲中文字幕在线观看| 国产精品亚洲专区在线播放 | 不卡视频免费在线观看| 亚洲国产成人久久综合区| 亚洲欧洲一区二区三区| 国产成人亚洲综合无码精品| 亚洲视频在线免费| 不卡一卡二卡三亚洲| 久久一区二区三区免费| 亚洲国产精品嫩草影院在线观看| 女人隐私秘视频黄www免费| 亚洲AV日韩AV永久无码绿巨人| 久久国产精品免费专区| 亚洲国产午夜中文字幕精品黄网站| 美女视频黄a视频全免费网站一区| 日韩免费的视频在线观看香蕉| 亚洲一本综合久久| 97热久久免费频精品99| 亚洲精品动漫免费二区| 亚洲免费在线视频播放| 亚洲无人区码一二三码区别图片| 日韩精品免费在线视频| 亚洲一区二区三区久久| 国产jizzjizz视频免费看 | 国内精品免费久久影院| 337p欧洲亚洲大胆艺术| 成年人免费视频观看| 一区在线免费观看| 91亚洲国产成人久久精品| 国产女高清在线看免费观看| 中文字幕免费视频精品一| 亚洲嫩草影院在线观看| 四虎影在线永久免费四虎地址8848aa| 中文字幕乱码系列免费| 亚洲在成人网在线看| 亚洲国产日韩成人综合天堂| 久久国产色AV免费观看| 国产精品亚洲一区二区三区久久| 亚洲Aⅴ无码专区在线观看q|