struts2.5框架使用萬用字元指定方法常見錯誤
struts2.5框架使用萬用字元指定方法(常見錯誤)
在學習struts框架時經常會使用到萬用字元呼叫方法,如下:
<package name="shop" namespace="/" extends="struts-default">
<!-- 配置Action -->
<actionname="user_*" class="userAction" method="{1}">
<result name="success">/WEB-INF/jsp/login.jsp</result>
</action>
</package>
但是在使用這種萬用字元方法的時候,經常會看到這樣的對映錯誤提示
Struts has detected an unhandled exception:
Message:There is no Action mapped for namespace [/] and action name [user_login] associated with context path [/shop].
如果看到提示的是對映問題,你可以按照對映路線排除一遍,
第一步:先排查訪問的連結有沒有問題(細節問題)
第二步:檢視struts.xml的配置(仔細排查,出現問題機率很大)
第三步:檢視相關的action類及方法(比如return的值是不是跟配置檔案中的result對應得上等)
第四步:檢視結果響應頁面是否存在問題(出現問題的機率比較小)
(具體的做法我不細講了,網上很多優秀篇章都有提及,可自行百度)
如果上面的四個步驟沒出問題,可是還是報錯,怎麼辦?那就可能是內部屬性配置的問題了
在Struts 2的核心jar包struts2-core中,有一個default.properties的預設配置檔案(路徑:struts-2.5.2-min\lib\org\apache\struts2\default.properties
其中有條語句是配置動態方法呼叫的
struts.enable.DynamicMethodInvocation = true
當使用動態呼叫方法時(action名 + 感嘆號 + 方法名進行方法呼叫),需要將其屬性改為true,
當使用萬用字元呼叫語法時,建議將其屬性改為false(struts2.5.2中預設是false)
當我們需要將其屬性改成false時,
只在struts.xml配置檔案中加入此句即可修改屬性
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
很多網友都說改了之後都行了,不過我換了struts2.5之後,整了好久都還是不行……
最後是在配置文件struts.xml的Action中配置了
<allowed-methods>Action內的方法名</allowed-methods>才成功了
比如上面程式碼修改如下:
<package name="shop" namespace="/" extends="struts-default">
<!-- 配置Action -->
<action name="user_*" class="userAction"method="{1}">
<result name="success">/WEB-INF/jsp/login.jsp</result> <allowed-methods>login</allowed-methods>
</action>
</package>
總結:在struts2.3之前的版本,正常的配置就可以了,但在struts2.3版本之後,使用萬用字元呼叫方法時,內部會驗證是否允許訪問該方法,所以要加上
<allowed-methods>方法名1,方法名2…</allowed-methods>程式碼。
或者在<action></action>外面新增
<global-allowed-methods>方法名1,方法名2</global-allowed-methods>
希望這個小知識點能幫助更多程式設計愛好者,在java道路上,與志同道合者共勉!!
相關推薦
struts2.5框架使用萬用字元指定方法常見錯誤
struts2.5框架使用萬用字元指定方法(常見錯誤) 在學習struts框架時經常會使用到萬用字元呼叫方法,如下: <package name="shop" namespace="/" ex
【Struts2學習筆記】struts2.5使用萬用字元配置action跳轉
寫在前面:其實在一年前,還沒有開始寫部落格的時候就已經學過struts2了,只是當時太蠢,無法理解MVC以及struts2的一些“人性化”的設定,過了一年再反過來看struts2就很明白了。只是在struts2.5裡面多了一個機制導致無法像以往一樣簡單的使
分享知識-快樂自己:Struts2(動態方法、動態結果、萬用字元、方法內部跳轉、action跳轉、OGNL 的使用及注意事項)
這裡主要以案例演示:涵蓋以下知識點 1、動態方法呼叫:使用關鍵 符號 ! 進行操作 例如:/名稱空間 ! 方法名 2、動態結果集:就是說,通過後臺返回的結果 ${} 獲取,重定向到符合預期的頁面。 3、萬能萬用字元:*_* :第一個 * 為 類名、第二個 * 為方
Mybatis typealiaspackage 萬用字元掃描方法
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
Struts2的萬能萬用字元
<!--統配下劃線_//方法名 {1}第一個引數類的簡單名稱-method{2}方法名--><action name="*_*" class="day06Pattern.{1}" method="{2}"> <result name="{2}">/{1}/{2}.js
5.rabbitmq--萬用字元模式Topics
rabbitmq--萬用字元模式Topics topic模式也稱為主題模式,其實他相對於routing模式最大的好處就是他多了一種匹配模式的路由,怎麼理解匹配呢,其實就相當於我們之前正則的.*這種,不過他的匹配機制可能不是這種(其實除了匹配規則外,他的作用就和routing模式一樣 ),而他的工作
32.3-5帶有萬用字元的匹配(自動機)
功能 這個程式可以判斷一個帶有萬用字元*的模式串是否在文字串中存在,沒有記錄位置資訊,當然,想記錄也是可以的 樣例輸入: abccbacbababc ab*bab*c 樣例輸出: 1 思路 對於樣例輸入,有限自動機如圖所示: 我們把每個萬用字元隔開
linux的shell指令碼的萬用字元使用方法
#!/bin/bash #author: ***** #date : #Email : ****@*** # 萬用字元 # # ? 任意單個字元 # * 任意0個或多個字元 # [ ] 匹配
判斷檔案是否存在,萬用字元檔案匹配發生錯誤 binary operator expected
time1=$(date -d "$currentTime" +%s) time2=$(($time1-24*3600)) filepath=/root/g01/g_01_api_*_$time2.tx
struts2.5框架使用萬用字元與動態方法
概述:struts2.5以後加強了安全性,下面就是安全配置引發的問題 萬用字元: 在學習struts框架時經常會使用到萬用字元呼叫方法,如下: <package name="usercrud" namespace="/" extends="struts-default">
Struts2怎樣呼叫Servlet?萬用字元怎樣使用?Struts2的動態方法呼叫如何配置使用?Struts2如何在執行方法之前進行驗證?
1.Struts2怎樣呼叫Servlet// servlet.api的三種方式 1.ActionContext.getContext().getSession();//Action上下文呼叫 2.ServletActionContext.
struts2.5.12版本使用action萬用字元提示找不到action的問題
我配置了一個PageAction <action name="*" method="{1}" class="com.cheng.web.action.PageAction"> <result name="success">/p
struts2.5的method使用萬用字元無效問題
struts2.5版本引入了新的安全限制(據說是2.3版本開始,沒去確認) 新版本萬用字元需要配置才能使用 兩種方法 1. 關閉嚴格方法呼叫 .... <package na
Struts2 學習之路(二):2.4 Struts2(2.5.14.1版本)中的萬用字元匹配問題
struts.xml 配置檔案中萬用字元的匹配 可以匹配action節點中的class屬性,method屬性,result子節點的name屬性,甚至是result子節點的路徑內容 因為2.5.x版本
struts2動態方法呼叫和使用萬用字元定義action
struts.xml: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Con
struts2.5萬用字元對映問題
寫專案時遇到的一個問題,在struts2.5中,使用萬用字元*對映,總是報錯顯示沒有這個action的mapppe。多方百度,才解決了問題。只要在需要萬用字元對映的package中新增一個屬性stric
struts2.5+框架使用通配符與動態方法
round ret extend turn pro 一個 span ucc 方法 概述:struts2.5以後加強了安全性,下面就是安全配置引發的問題 通配符: 在學習struts框架時經常會使用到通配符調用方法,如下: <package
第11講 struts2的struts.xml的萬用字元控制
1複製HeadFirstStruts2chapter02-04,改名:HeadFirstStruts2chapter02-05,修改web project settings匯入StudentAction和GradeAction,刪除其他多餘的Action, StudentAction如下:packa
struts2 <action>無法使用萬用字元解決辦法
在我們使用struts2的時候,肯定不想每一個方法就寫一<action>,所以通常我們會使用萬用字元,簡化我們的程式碼。 <action name="userAction_*" class="userAction" method="{1}" >  
Java泛型方法和型別萬用字元的區別
泛型方法VS型別萬用字元(兩者可以混用): 1)你會發現所有能用型別萬用字元(?)解決的問題都能用泛型方法解決,並且泛型方法可以解決的更好: 最典型的一個例子就是: