隨筆 - 72  文章 - 28  trackbacks - 0
          <2014年1月>
          2930311234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          常用鏈接

          留言簿(4)

          隨筆分類(66)

          隨筆檔案(72)

          文章檔案(19)

          收藏夾

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

           警告信息如下:

          警告: No configuration found for the specified action: '/myNameSpace/login.action' in namespace: ''. Form action defaulting to 'action' attribute's literal value.

           

          struts.xml配置信息(部分)

           

          <package name="packageName" extends="struts-default" namespace="/myNameSpace">

              <action name="login" class="com.jato.srvclink.test.login.LoginAction" method="login">

           

          jsp頁面配置信息(部分)

           

          <s:form action="/myNameSpace/login.action">

           

          思考:沒有在''namespace中發(fā)現(xiàn)指定的action '/myNameSpace/login.action'

          答疑:因?yàn)榕渲玫?/span>struts2標(biāo)簽并未指定namespace屬性。所以struts2會默認(rèn)從根命名空間"/"搜索action' /myNameSpace/login.action',如果搜索不到將進(jìn)入默認(rèn)命名空間''搜索action請求串,在默認(rèn)命名空間中是肯定找不到我們 定義的action的,所以,struts2拋出一個警告信息。

          但是為什么我們沒有填寫namespace,我們的請求也可以正常訪問呢?

           

          我們來看一下解析后的html

          查看源碼得到的html(部分)

           

          <form id="login" onsubmit="return true;" action="/srvclink/myNameSpace/login.action" method="post">

           

          我們看到form提交的action串是準(zhǔn)確的url請求,action串確實(shí)是/srvclin(應(yīng)用根)/myNameSpace(命名空間)/login.action。

          命名空間中找不到action定義,并不意味著這個action真的不存在,只是我們的代碼有問題而已。還有一點(diǎn)是我們在jsp頁面的action請求中 手動的加入了.action后綴。事實(shí)上struts2會自動追加.action的,因?yàn)槲覀儾]有合法的使用struts2的標(biāo)簽,所以struts2 這里并沒有給我們追加.action,解析后的代碼中存在的.action,完全是我們手動在jsp頁面填寫的,有疑問的網(wǎng)友可以不手動添加查看 html。

           

          我們修改我們的程序代碼

           

          jsp頁面配置信息(部分)修改后加入namespace屬性,修改action屬性值為/login.action

           

          <s:form action="/login.action" namespace="/myNameSpace">

           

          請求頁面后,大家很失望吧?警告依然存在。但是我們看一下警告信息。

           

          警告信息:

           

          警告: No configuration found for the specified action: '/login.action' in namespace: '/myNameSpace'. Form action defaulting to 'action' attribute's literal value.

           

          沒有在'/myNameSpace'namespace中發(fā)現(xiàn)指定的action '/login.action'

           

          毫無疑問,這里的警告和第一次的警告信息截然不同。我們現(xiàn)在存在命名空間,'/myNameSpace'能夠被struts2檢索到,并不是開始的''。那問題的關(guān)鍵在哪里呢?

          namespace中沒有發(fā)現(xiàn)指定的action '/login.action' ???

           

          我們來看一下struts.xml中的配置:

           

          struts.xml配置信息(部分)

           

          <package name="packageName" extends="struts-default" namespace="/myNameSpace">

              <action name="login" class="com.jato.srvclink.test.login.LoginAction" method="login">

           

          是的,我們'/myNameSpace'命名空間下,只有action名字為'login'的定義,并沒有所謂的'/login.action' 定義,所以struts2的警告并未錯。如果大家對這個抱有懷疑,可以修改action的名字'login'‘/longin.action’

          <action name="/login.action" class="com.jato.srvclink.test.login.LoginAction" method="login">

          請求頁面時你會發(fā)現(xiàn)不在報(bào)警告信息,原因很簡單。因?yàn)樵诿臻g為'myNameSpace'下確實(shí)存在命名為'/login.action'action

           

          我們再次修改配置文件

           

          jsp頁面配置信息(部分)修改后action屬性值為longin

           

          <s:form action="login" namespace="/myNameSpace">

           

          請求頁面時,我們發(fā)現(xiàn)不再有警告信息了。

           

          如果你有足夠細(xì)心,我想你應(yīng)該可以徹底的明白為什么struts2會報(bào)警了吧?你也應(yīng)該明白了使用struts2標(biāo)簽action中添加/線后請求反而報(bào)錯的原因了。

          posted on 2014-01-16 10:13 kelly 閱讀(259) 評論(0)  編輯  收藏 所屬分類: java 框架
          主站蜘蛛池模板: 定结县| 江安县| 托克逊县| 深水埗区| 达孜县| 沂源县| 内乡县| 平舆县| 兴业县| 东台市| 定陶县| 洪泽县| 黑山县| 报价| 青海省| 锦屏县| 霍山县| 阳曲县| 习水县| 吴桥县| 垫江县| 南陵县| 石棉县| 肥西县| 东乌珠穆沁旗| 南丰县| 剑川县| 陈巴尔虎旗| 禹州市| 双柏县| 望都县| 徐汇区| 宿州市| 光山县| 禹州市| 多伦县| 象山县| 靖宇县| 满洲里市| 文安县| 昌吉市|