Struts2動態方法報錯
在使用Struts2的2.5.12版本,在使用DMI(動態方法注入)的時候,總是報:
HTTP Status 404 - There is no Action mapped for namespace [/] and action name [user!update] associated with context path [/M_Struts_1].
type Status report
message There is no Action mapped for namespace [/] and action name [user!update] associated with context path [/M_Struts_1].
description The requested resource is not available.
Struts Problem Report
Struts has detected an unhandled exception:
Messages:
Method update for action user is not allowed!
Stacktraces
Method update for action user is not allowed! - [unknown location]
com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java :206)
org.apache.struts2.factory.StrutsActionProxy.prepare(StrutsActionProxy.java:62)
org.apache.struts2.factory.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:37)
com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58 )
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:567)
org.apache.struts2.dispatcher.ExecuteOperations.executeAction(ExecuteOperations.java:81)
org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:143)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1502)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1458)
java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.lang.Thread.run(Unknown Source)
原來 struts2.5 為了提升安全性,添加了 allomethod ,動態方法可以被訪問那麼需要新增到允許
可以有三種解決方法:
第一種:package設定
<constant name="struts.devMode" value="true"></constant>
<!-- 開啟動態執行動作方法 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
<package name="three" extends="struts-default">
<!--新增執行動態訪問方法的正則過濾 -->
<global-allowed-methods>regex:.*</global-allowed-methods>
<!--動態訪問:name!方法名.action -->
<action name="user" class="cn.code404.web.action.UserAction">
<result name="success">/success.jsp</result>
</action>
第二種:action設定
<constant name="struts.devMode" value="true"></constant>
<!-- 開啟動態執行動作方法 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
<package name="three" extends="struts-default">
<!--動態訪問:name!方法名.action -->
<action name="user" class="cn.code404.web.action.UserAction">
<result name="success">/success.jsp</result>
<!--配置當前類中哪些方法允許動態使用-->
<allowed-methods>regex:.*</allowed-methods>
</action>
<!--動作類的配置方式 -->
<!-- <action name="*" class="cn.code404.web.action.UserAction" method="{1}">
<result name="success">/{1}.jsp</result>
</action>
<action name="*_*" class="cn.code404.web.action.UserAction" method="{1}{2}">
<result name="success">/{1}.jsp</result>
</action> -->
</package>
第三種方式:使用註解@AllowedMethods
@Action(value="user",results={@Result(name="success",location="/success.jsp")})
@AllowedMethods(value={("add"),("update"),("delete")})
public class UserAction {
public String add(){
System.out.println("新增");
return SUCCESS;
}
public String update(){
System.out.println("修改");
return SUCCESS;
}
public String delete(){
System.out.println("刪除");
return SUCCESS;
}
}
相關推薦
Struts2動態方法報錯
在使用Struts2的2.5.12版本,在使用DMI(動態方法注入)的時候,總是報: HTTP Status 404 - There is no Action mapped for namespace [/] and action name [user!u
BASE64Encoded() 方法報錯說方法未定義
.com 定義 acc string img src images alt 解決 代碼: String enParams = new BASE64Encoder().encode(strParams.getBytes()); 出錯,顯示方法未定義 解決方法:項目右鍵—
使用seek()方法報錯:“io.UnsupportedOperation: can't do nonzero cur-relative seeks”錯誤的原因
pac nbsp mar std orm ack logs 打開文件 off 在使用seek()函數時,有時候會報錯為 “io.UnsupportedOperation: can‘t do nonzero cur-relative seeks”,代碼如下: >&g
myeclipse中用Junit測試方法報錯
nbsp lips es2017 測試方法 報錯 images myeclipse junit ima 原因是在測試方法的上面沒有寫註解 @Test myeclipse中用Junit測試方法報錯
重寫getColumnName()方法報錯java.lang.StackOverflowError
n) vector main thread 想法 color override 文章 nco 我在一個方法裏面初始化了一個列名,並添加了列名 columnNames = new Vector(); columnNames.add("學號");
struts2 動態方法調用
st2 public i18n 動態方法調用 icon https 代碼 不用 內容 https://blog.csdn.net/yangqicong/article/details/6887568 學習Struts2有一段時間了。對於Struts2的動態方法調用做一下
spring測試save方法報錯
leg clas creat ould seq save eth val ble 用test類測試service的save方法時,報錯如下: 2018-08-24 21:52:13,506 - could not read a hi value com.mysql.jdb
Spring Data JPA使用getOne方法報錯:Method threw 'org.hibernate.LazyInitializationException' exception. Cannot evaluate
com tps 對象 vlad 解釋 連接 method 需要 至少 getOne是懶加載,需要增加這個配置: spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true,但這種方式不太友好,建議不要使用。
for迴圈呼叫刪除方法報錯解決辦法
1.每次刪除一個元素,索引往前移,即i-1. List<String> list = new ArrayList<String>(); list.add("111"); &nbs
JPA自帶findOne方法報錯原因
是由於jdk8的原因,有可能和spring boot的版本也關係, 兩種方式可選 註冊,返回類是Optional<Girl>, Optional是jdk8自帶的 @GetMapping(value = "/girls/{id}")public Optional<Gir
JdbcTemplate的queryForMap方法報錯
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
Junit 單元測試@Test註解的方法報錯Annotations are not allowed here
問題描述: Annotations are not allowed here 使用IDEA開發的時候,單元測試如果不使用IDE提供的方式建立,而是自己手動建立的話,會報這
第12講 struts2動態方法呼叫
1在HeadFirstStruts2chapter02-05中,直接修改struts.xml檔案,去掉method屬性和萬用字元屬性 xml version="1.0" encoding="UTF-8" ?> DOCTYPE struts PU
struts2動態方法呼叫與j2ee互動傳參
動態方法呼叫: (action程式碼) package com.zking.web; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ModelDriven; import
vue sort()方法報錯:“You may have an infinite update loop in a component”
html <div class="box" v-for="(item,itemindex) in itemrank" :key="itemindex"> <div class="box-title" > <div class="t
mybatis-plus呼叫自身的 selectById 方法報錯:org.apache.ibatis.binding.BindingException:
mybatis-plus的版本號是 2.0.1,在呼叫自身的insert(T)的時候沒有報錯,但是執行update報錯,呼叫selectById、deleteById的時候也報錯。也就是涉及到需要主鍵識別的都報錯。 語句如下:(介面與實現都是MP自己實現的) User
mybatis-plus調用自身的 selectById 方法報錯:org.apache.ibatis.binding.BindingException:
spring ret 分享 img ceshi nbsp 都是 alua tro mybatis-plus的版本號是 2.0.1,在調用自身的insert(T)的時候沒有報錯,但是執行update報錯,調用selectById、deleteById的時候也報錯。也就是涉
呼叫os.fork()方法報錯:AttributeError: module 'os' has no attribute 'fork'
錯誤棧: Traceback (most recent call last): File “D:/Users/qc/PycharmProjects/day20/duoxiancheng/duoxiancheng.py”, line 5, in pid = os.fork() Attr
使用springboot 時contraller中findById 方法報錯問題
在書寫springboot的contraller時 出現了 findById和findOne 報錯出紅。 經過查詢一番資料後,發現spring boot 2版本中所用的查詢是 findById(); 並且在使用的時候會加上一個get()方法
解決C#中呼叫WCF方法報錯:遠端伺服器返回錯誤 (404) 未找到
IIS配置問題,解決方法: 1. 首先新增MIME型別 副檔名“.svc”,MIME型別 “application/octet-stream” 2、處理程式對映--新增託管處理程式 請求路徑 “.svc” 型別 “System.ServiceModel.Activation.HttpH