从头再学习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>
<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>
<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>
感谢:hanhan12312 的CSDN博客。