今天在運(yùn)行Struts2時(shí),無意間發(fā)現(xiàn)程序在寫Struts.xml有這樣的問題:
以下是本人一個(gè)Action映射的配置文件
xml 代碼
- <action name="saveExhibitionAppTable"
- class="cn.gov.tdb.controller.EnterpriseController"
- method="saveExhibitionAppTable">
- <result name="input">exhibitionAppTable.jspresult>
- <result name="success" type="redirect-action">
- generateBarcode.tdbdb?getTichetSource=${getTichetSource}&companyId=${companyId}&serviceId=${serviceId}
- result>
- action>
沒有什么特別的地方就是在
xml 代碼
- <result name="success" type="redirect-action">
- generateBarcode.tdbdb?getTichetSource=${getTichetSource}&companyId=${companyId}&serviceId=${serviceId}
- result>
這里返回的是一個(gè)redirect-action, ${getTicketSource}等這三個(gè)參數(shù)是這個(gè)Action的三個(gè)屬性(有g(shù)et,set方法的),我想把它們傳給generateBarcode.tdbdb, 卻發(fā)現(xiàn)一直取不到這三個(gè)傳過來的參數(shù),空指針報(bào)錯(cuò).然后我又把配置文件改成如下,弄成generateBarcode.jsp發(fā)現(xiàn)值確實(shí)已經(jīng)傳過來了,看來Struts2在redirec-action的時(shí)候已經(jīng)處理過了.xml 代碼
- <result name="success">
- generateBarcode.jsp?getTichetSource=${getTichetSource}&companyId=${companyId}&serviceId=${serviceId}
- result>
查了查Strut2的文檔,發(fā)現(xiàn)有以下配置,也就是說這個(gè)時(shí)候把要傳遞的參數(shù)如果分開來的話,通過redirec-action也是可以正常傳過來的.xml 代碼
- <action name="saveExhibitionAppTable"
- class="cn.gov.tdb.controller.EnterpriseController"
- method="saveExhibitionAppTable">
- <result name="input">exhibitionAppTable.jspresult>
- <result name="success" type="redirect-action">
- <param name="actionName">generateBarcodeparam>
- <param name="namespace">/param>
- <param name="getTichetSource">${getTichetSource}param>
- <param name="companyId">${companyId}param>
- <param name="serviceId">${serviceId}param>
- result>
- action>
大家注意過這個(gè)問題嗎?
- 17:49
- 瀏覽 (4152)
- 論壇瀏覽 (3049)
- 評論 (16)
- 分類: Struts2
- 發(fā)布在 struts2 圈子
- 收藏
- 相關(guān)推薦
評論
type改為type="redirct"
在結(jié)果中加入擴(kuò)展名字
如果是一個(gè)類的屬性:
比如
<param name="company.companyId">${company.companyId}</param>
好像有點(diǎn)問題
class="cn.gov.tdb.controller.EnterpriseController"
method="saveExhibitionAppTable">
<result name="input">exhibitionAppTable.jspresult>
<result name="success" type="redirect-action">
<param name="actionName">generateBarcodeparam>
<param name="namespace">/param>
<param name="getTichetSource">${getTichetSource}param>
<param name="companyId">${companyId}param>
<param name="serviceId">${serviceId}param>
result>
action>
這個(gè)在后臺會提示在ognl了沒有相應(yīng)的屬性,是會報(bào)異常的,雖然在頁面上沒問題,但還是不可取的
把兩個(gè)_去掉
改成這樣就可以完善解決問題
<result name="success" type="redirect-action">
generateBarcode.tdbdb?getTichetSource=${getTichetSource}&companyId=${companyId}&serviceId=${serviceId}
</result>
和
<result name="success">
generateBarcode.jsp?getTichetSource=${getTichetSource}&companyId=${companyId}&serviceId=${serviceId}
</result>
不同運(yùn)行情況的問題
-
-
后面這個(gè)問題也不太清楚,最近也沒時(shí)間弄,提一下redirect-action和redirect是不一樣的
redirect-action的actionName是重定向到action名
redirect的actionName是action執(zhí)行后的跳轉(zhuǎn)路徑
(以上解釋摘自webwork官方文檔)
你可以試著把下面這句中間那部分聲明稱一個(gè)action,再在這里配置actionName或者改用redirect試試
<result name="success" type="redirect-action">
generateBarcode.tdbdb?getTichetSource=${getTichetSource}&companyId=${companyId}&serviceId=${serviceId}
</result>
<result name="success" type="redirect-action">
<param name="actionName">generateBarcode</param>
<param name="namespace">/</param>
<param name="getTichetSource">${getTichetSource}</param>
<param name="companyId">${companyId}</param>
<param name="serviceId">${serviceId}</param>
</result>
卻能正常傳參數(shù),怎么解釋呢?
struts2 默認(rèn)是dispatcher,這個(gè)是服務(wù)器端轉(zhuǎn)向,在服務(wù)器端執(zhí)行,(象servlet里,request.getRequestDispatcher("url").forword(request,response))
在ACTION里處理了下!如果遇到空就賦初值!