您的位置:首页 > 编程语言 > Java开发

struts2——DMI动态调用失败解决方案

2016-05-29 13:20 447 查看
从头再学习struts2,按照视频,学到DMI动态调用的时候,也就是使用!感叹号调用action里面的方法时候,每次都报错。如图:



我的配置:

jdk1.7;struts-2.3里的lib

struts.xml

<span style="font-family:Microsoft YaHei;font-size:18px;"><?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
<constant name="struts.devMode" value="true "></constant>
<package name = "actions" namespace="/actions" extends="struts-default ">
<action name= "user" class="com.cfs.action.UserAction"  ><!-- method方法 指定用啥方法,不方便 -->
<result>
/user_add_success.jsp
</result>
</action>
</package>
</struts></span>


web.xml

<span style="font-family:Microsoft YaHei;font-size:18px;"><?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app></span>


UserAction

<span style="font-family:Microsoft YaHei;font-size:18px;">package com.cfs.action;

import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport{
public String add(){
return SUCCESS;
}
public String upd(){
return SUCCESS;
}
}
</span>


user_add_success.jsp

<body>User add success. <br></body>

查了书,看了视频,都没发现一点不一样的配置,可就是不行。最后,解决办法:
去掉struts.xml中,动态保存的那一句话,改成.

<span style="font-family:Microsoft YaHei;font-size:18px;"><constant name="struts.enable.DynamicMethodInvocation" value="true" /></span>看起来应该是开启DMI功能的意思。这句话详细的位置:struts.xml
<span style="font-family:Microsoft YaHei;font-size:18px;"><?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<package name = "user" namespace="/user" extends="struts-default ">
<action name= "add" class="com.cfs.action.UserAction" method="add" ><!-- method方法 指定用啥方法,不方便 -->
<result>
/user_add_success.jsp
</result>
</action>
</package>
</struts></span>

重启服务器,访问:http://localhost:8080/Struts2_500_ActionMethod/actions/user!add



感谢:hanhan12312 的CSDN博客。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息