這里放些簡(jiǎn)單的東西,但是比較常用,感覺(jué)有幫助的拿去用吧。

一、一個(gè)form多個(gè)提交的解決辦法
   
    <s:form action="submit.action">
        <s:textfield name="msg" label="輸入內(nèi)容" />
        <s:submit name="save" value="保存" method="save" />
        <s:submit name="print" value="打印" method="print" />
    </s:form>

二、自定義類型轉(zhuǎn)換器

    如果是局部類型轉(zhuǎn)換器,建立cn.dy.type.conversion,在這個(gè)包里面新建一個(gè)類。
    比如是日期類型的DateTypeConverter,繼承com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter,然后在action所在的包里面建立ActionClassName-conversion.properties,文件里面的內(nèi)容為:屬性名稱=類型轉(zhuǎn)換器的全類名。
    如果是全局類型轉(zhuǎn)換器,新建轉(zhuǎn)換器代碼和局部是一樣的,不同之處在于是在WEB-INF/classes下放置Xwork-conversion.properties,而且文件的內(nèi)容為:需要轉(zhuǎn)換的數(shù)據(jù)類型=類型轉(zhuǎn)換器的全類名。
    全局轉(zhuǎn)換器和局部轉(zhuǎn)換器的不同在于全局轉(zhuǎn)換器要求要轉(zhuǎn)換的格式必須統(tǒng)一,比如說(shuō)日期,有些是2011-6-20,有些是20110620,最好用局部轉(zhuǎn)換器。

三、struts2訪問(wèn)和添加幾個(gè)屬性
   
    如果僅僅訪問(wèn)和添加則使用下面的方式:
    ActionContext ctx=ActionContext.getContext();
    ctx.getApplication().put("app","應(yīng)用范圍屬性");
    ctx.getSession().put("ses","會(huì)話范圍屬性");
    ctx.put("req","請(qǐng)求范圍屬性");
    ctx.put("names",Arrays.asList("first","second","third"));


    如果要獲得站點(diǎn)某個(gè)目錄的絕對(duì)路徑,使用下面的方式可以獲取:
   
    HttpServletRequest  request=ServletActionContext.getRequest();
    ServletContext  servletContext=ServletActionContext.getServletContext();
    request.setAttribute("req","請(qǐng)求范圍");
    request.getSession().setAttribute("ses","會(huì)話范圍屬性");
    servletContext.setAttribute("app","應(yīng)用范圍屬性");
    servletContext.getRealPath(arg0);
   
    ActionContext.getContext().put("greeting","歡迎來(lái)到這里");
    然后在結(jié)果頁(yè)面里,從請(qǐng)求對(duì)象中取出greeting屬性,如下:
    ${requestScope.greeting}或者<%=request.getAttribute("greeting")%>
    ${sessionScope.user.username},${requestScope.greeting},${applicationScope.counter}

四、攔截器

    <package name="manage" namespace="/manage" extends="struts-default">
        <!-- 攔截器配置 -->
        <interceptors>
        <!-- 當(dāng)有自定義攔截器的時(shí)候,struts2提供的默認(rèn)攔截器就失去作用了 -->
        <interceptor name="login" class="cn.dy.interceptor.LoginItcpt" />
            <!-- 為了使用默認(rèn)攔截器,這里定義攔截器棧,把默認(rèn)攔截器給載入進(jìn)去 -->
            <interceptor-stack name="loginStack">
                <interceptor-ref name="defaultStack" />
                <interceptor-ref name="login" />
            </interceptor-stack>
        </interceptors>
   
        <!-- 為package中所有的action使用攔截器 ,當(dāng)某個(gè)action中有顯式攔截器時(shí),這個(gè)默認(rèn)攔截器就不會(huì)再運(yùn)用到那個(gè)action中-->
        <!-- <default-interceptor-ref name="loginStack" />  -->

        <!-- 攔截器結(jié)果頁(yè)面,最好設(shè)成全局 -->
        <global-results>
            <result name="result">/WEB-INF/manage/result.jsp</result>
        </global-results>
   
        <action name="go_*" class="manageAction" method="{1}">
            <result name="input">/index.jsp</result>
            <interceptor-ref name="loginStack" />
        </action>
    </package>
    當(dāng)有多個(gè)配置文件時(shí),每個(gè)都要單獨(dú)加攔截器,因?yàn)閿r截器標(biāo)簽是在<package>里面的。


      此文部分內(nèi)容來(lái)源網(wǎng)絡(luò)。如有侵犯您的版權(quán)問(wèn)題,請(qǐng)來(lái)消息至電子郵件DyEngima&163.com(&換成@),經(jīng)核實(shí)后會(huì)在文章內(nèi)部標(biāo)明來(lái)源。
轉(zhuǎn)載請(qǐng)注明來(lái)源http://www.aygfsteel.com/DyEnigma/
簽名:有能力、有擔(dān)當(dāng)、有情義的人才能稱之為男人,而不是由性別決定。