這里放些簡(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}
四、攔截器
一、一個(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}">
<!-- 當(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>里面的。
<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)、有情義的人才能稱之為男人,而不是由性別決定。