這里放些簡單的東西,但是比較常用,感覺有幫助的拿去用吧。

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

二、自定義類型轉換器

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

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


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

四、攔截器

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

        <!-- 攔截器結果頁面,最好設成全局 -->
        <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>
    當有多個配置文件時,每個都要單獨加攔截器,因為攔截器標簽是在<package>里面的。


      此文部分內容來源網絡。如有侵犯您的版權問題,請來消息至電子郵件DyEngima&163.com(&換成@),經核實后會在文章內部標明來源。
轉載請注明來源http://www.aygfsteel.com/DyEnigma/
簽名:有能力、有擔當、有情義的人才能稱之為男人,而不是由性別決定。