(action动态方法调用)struts通过ActionName!methodName.action,即通过感叹号(即!)访问某Action的方法,确老是报错
2016-05-21 14:24
591 查看
(struts通过ActionName!methodName.action,即通过感叹号(即!)访问某Action的方法,如下所示:
http url链接如下:
http://127.0.0.1:8080/News/newsAction!findAll.action
上面链接中News是工程名,newsAction是类名,findAll是newsAction类中的方法。
NewsAction.java如下
public class NewsAction extends BaseAction implements ModelDriven<News>{
private NewsService newsService = null;
private News model = new News();
public String findAll() throws IOException{
List<News> news = newsService.findAll();
JSONArray array = JSONArray.fromObject(news);
this.getResponse().setContentType("text/html; charset=utf-8");
this.getResponse().setHeader("Cache-Control", "no-cache");
this.getResponse().getWriter().print(array);
return null;
}
}
struts.xml配置如下:
<package name="default" extends="struts-default">
<action name="newsAction" class="newsAction">
</action>
</package>
spring.xml配置如下:
<bean id="newsAction" class="com.hhl.news.action.NewsAction">
<property name="newsService" ref="newsService"/>
</bean>
却老是报错,访问不上,报错如下:
There is no Action mapped for namespace [/] and action name [newsAction!findAll] associated with context path [/News].
namespace啥的也没有配错,什么都没错。为什么?????
答案是:将Struts-core.jar包中的default.properties文件中,struts.enable.DynamicMethodInvocation属性设置为true!!Struts-core.jar包中该属性默认竟然是false的!
详细解释:使用动态方法调用必须设置Struts2允许动态方法调用。开启系统的动态方法调用是通过设置struts.enable.DynamicMethodInvocation常量完成的,设置该常量的值为true,将开启动态方法调用;否则将关闭关闭动态方法调用!!
但那个default.properties是不能被更改的,有如下解决方法:
方法1:。如需要更改里面的配置信息,可以在src根目录下建一个 struts.properties的配置文件,然后重写加载所要更改的配置信息。http://blog.csdn.net/wfcaven/article/details/5937557
方法2:
在struts.xml里加入 <constant name="struts.enable.DynamicMethodInvocation" value="true" />
http url链接如下:
http://127.0.0.1:8080/News/newsAction!findAll.action
上面链接中News是工程名,newsAction是类名,findAll是newsAction类中的方法。
NewsAction.java如下
public class NewsAction extends BaseAction implements ModelDriven<News>{
private NewsService newsService = null;
private News model = new News();
public String findAll() throws IOException{
List<News> news = newsService.findAll();
JSONArray array = JSONArray.fromObject(news);
this.getResponse().setContentType("text/html; charset=utf-8");
this.getResponse().setHeader("Cache-Control", "no-cache");
this.getResponse().getWriter().print(array);
return null;
}
}
struts.xml配置如下:
<package name="default" extends="struts-default">
<action name="newsAction" class="newsAction">
</action>
</package>
spring.xml配置如下:
<bean id="newsAction" class="com.hhl.news.action.NewsAction">
<property name="newsService" ref="newsService"/>
</bean>
却老是报错,访问不上,报错如下:
There is no Action mapped for namespace [/] and action name [newsAction!findAll] associated with context path [/News].
namespace啥的也没有配错,什么都没错。为什么?????
答案是:将Struts-core.jar包中的default.properties文件中,struts.enable.DynamicMethodInvocation属性设置为true!!Struts-core.jar包中该属性默认竟然是false的!
详细解释:使用动态方法调用必须设置Struts2允许动态方法调用。开启系统的动态方法调用是通过设置struts.enable.DynamicMethodInvocation常量完成的,设置该常量的值为true,将开启动态方法调用;否则将关闭关闭动态方法调用!!
但那个default.properties是不能被更改的,有如下解决方法:
方法1:。如需要更改里面的配置信息,可以在src根目录下建一个 struts.properties的配置文件,然后重写加载所要更改的配置信息。http://blog.csdn.net/wfcaven/article/details/5937557
方法2:
在struts.xml里加入 <constant name="struts.enable.DynamicMethodInvocation" value="true" />
相关文章推荐
- Java注解一 注解的含义
- JavaWeb开发环境的搭建
- 关于struts2 中result type="stream"
- 我遇到的bug_使用spring+junit4时_java.lang.ExceptionInInitializerError
- java向上和向下转型
- 作业_java基础第十天_集合
- java-关于文件操作-输出流的使用
- 开发过程中的常用Eclipse插件
- Java EE中Srevlet的使用
- Struts框架 action怎么动态调用方法
- spring-boot之简单定时任务
- Java数据库连接池比较及使用场景
- Java用SAX和DOM解析器解析Xml
- Java线程创建的三种方式
- springcloud(第八篇)springcloud feign
- Java float保留两位小数或多位小数
- eclipse中新建Java工程的三个JRE选项区别
- String的equals方法和contentEquals方法的比较
- 转-Spring单例模式与线程安全
- mysql/Java服务端对emoji的支持