struts 匹配action问题

msjqd 2010-03-04 03:36:51
struts.xml

/*************************************************************************************/
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="false" />

<package name="default" extends="struts-default">
<action name="org" class="organizationAct">
<result name="success">./base/organization_list.jsp</result>
</action>
<action name="Organization_*" class="organizationAct" method="{1}">
<result name="success">./base/organization_list.jsp</result>
</action>
</package>
</struts>


organizationAct.java

/*************************************************************************************/
import java.util.List;

import javax.annotation.Resource;

import org.apache.struts2.ServletActionContext;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.opensymphony.xwork2.ActionSupport;
import com.ssh.model.t_organization;
import com.ssh.service.OrganizationSer;

@Service("organizationAct")
@Transactional
public class OrganizationAct extends ActionSupport {

@Resource
OrganizationSer organizationSer ;

@Override
public String execute() throws Exception {
return "success";
}

public String add() throws Exception{

return "success";
}

public String listAll() throws Exception{

return "success";
}
}

为什么我在调用 org.action 时候没有问题
而调用Organization_add.action 出现下面的提示

java.lang.NoSuchMethodException: $Proxy29.list()
java.lang.Class.getMethod(Class.java:1605)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.getActionMethod(AnnotationValidationInterceptor.java:75)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:47)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:148)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:93)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:128)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(ProfilingActivationInterceptor.java:104)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:148)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:128)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:468)
org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:76)

...全文
273 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
msjqd 2010-03-04
  • 打赏
  • 举报
回复
忘记qq号 了 355076365
msjqd 2010-03-04
  • 打赏
  • 举报
回复
还是不行 加我qq 我把程序 给你 你瞅瞅
蛋黄车 2010-03-04
  • 打赏
  • 举报
回复
引用 15 楼 msjqd 的回复:
<action name="Organization_*" class="organizationAct" method="{1}">
    <result name="success">./base/organization_list.jsp </result>
    </action>

    保留一个还是不行


汗,你保留这一个,同时要把excute()方法去掉,也把<constant name="struts.enable.DynamicMethodInvocation" value="true" /> 这一行去掉。

这样肯定可以的,不可以就是见鬼了
msjqd 2010-03-04
  • 打赏
  • 举报
回复
<action name="Organization_*" class="organizationAct" method="{1}">
<result name="success">./base/organization_list.jsp </result>
</action>

保留一个还是不行
wm279322408 2010-03-04
  • 打赏
  • 举报
回复
不懂....抱歉 路过
蛋黄车 2010-03-04
  • 打赏
  • 举报
回复
<action name="org" class="organizationAct">
<result name="success">./base/organization_list.jsp </result>
</action>
<action name="Organization_*" class="organizationAct" method="{1}">
<result name="success">./base/organization_list.jsp </result>
</action>

刚发现,看你配置的action太纠结了!!!!

相同的action竟然配置出两个来,默认使用第一个action的配置
redlotus_lyn 2010-03-04
  • 打赏
  • 举报
回复

<constant name="struts.enable.DynamicMethodInvocation" value="true" />
msjqd 2010-03-04
  • 打赏
  • 举报
回复
高手帮忙看看啊 搞了一下午了
蛋黄车 2010-03-04
  • 打赏
  • 举报
回复
引用 9 楼 msjqd 的回复:
引用 8 楼 lrbyantai 的回复:
OrganizationAct这个action中已经有了一个默认的excute()执行方法

把此方法去掉即可访问add()方法

去掉excute 仍然不行 相同的提示


另外:<constant name="struts.enable.DynamicMethodInvocation" value="false" /> 这一行去掉
msjqd 2010-03-04
  • 打赏
  • 举报
回复
引用 8 楼 lrbyantai 的回复:
OrganizationAct这个action中已经有了一个默认的excute()执行方法

把此方法去掉即可访问add()方法


去掉excute 仍然不行 相同的提示
蛋黄车 2010-03-04
  • 打赏
  • 举报
回复
OrganizationAct这个action中已经有了一个默认的excute()执行方法

把此方法去掉即可访问add()方法
zhangyityd 2010-03-04
  • 打赏
  • 举报
回复
这貌似是Struts2的一个Bug 你把下划线改成其他的 比如中划线试试看。。。。。
msjqd 2010-03-04
  • 打赏
  • 举报
回复
不好意思 刚刚发的有点问题
重发一个新的

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="false" />

<package name="default" extends="struts-default">
<action name="org" class="com.ssh.struts">
<result name="success">./base/organization_list.jsp</result>
</action>
<action name="organization_*" class="organizationAct" method="{1}">
<result name="success">./base/organization_{1}.jsp</result>
</action>
</package>
</struts>


package com.ssh.struts;

import java.util.List;

import javax.annotation.Resource;

import org.apache.struts2.ServletActionContext;
import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.opensymphony.xwork2.ActionSupport;
import com.ssh.model.t_organization;
import com.ssh.service.OrganizationSer;

@Transactional
@Repository("organizationAct")
public class OrganizationAct extends ActionSupport {

@Resource
OrganizationSer organizationSer ;

@Override
public String execute() throws Exception {
return "success";
}

public String add() throws Exception{
return "success";
}

@SuppressWarnings("unchecked")
public String list() throws Exception{

return "success";
}
}

为什么我在调用 org.action 时候没有问题
而调用organization_list.action 出现下面的提示
java.lang.NoSuchMethodException: $Proxy29.list()
java.lang.Class.getMethod(Class.java:1605)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.getActionMethod(AnnotationValidationInterceptor.java:75)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:47)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:148)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:93)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:128)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(ProfilingActivationInterceptor.java:104)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:148)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:128)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:468)
org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:76)






msjqd 2010-03-04
  • 打赏
  • 举报
回复
根据提示我也知道是找不到方法
现在想不明白的就是为什么我的类中存在add 方法
为什么找不到呢
海棠无香1998 2010-03-04
  • 打赏
  • 举报
回复
java.lang.NoSuchMethodException: $Proxy29.list()

public String listAll() throws Exception{

return "success";
}
海棠无香1998 2010-03-04
  • 打赏
  • 举报
回复
错误很明显,没有这个方法
msjqd 2010-03-04
  • 打赏
  • 举报
回复
但是我的OrganizationAct类中明明就有一个add方法
APOLLO_TS 2010-03-04
  • 打赏
  • 举报
回复
Organization 没有add方法!

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧