struts2中动态调用方法报错

背景:在struts2中,当一个Action对应多个方法时,为了不给每一个方法增加action的配置,可以采用动态调用方法。这里实践了动态调用方法中的一种,即在URL中使用method参数调用方法。在这过程中,出现一个错误,解决方法很简单,但却绕了好大的弯~~~所以写文,以帮助遇到同样问题的亲们。

源码:

1.action文件:

package com.web.www.action;

public class SimpleAction {
    private String username;
    private String password;
    
    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String addInput(){
        System.out.println("进入添加界面");
        return "add_input";
    }
    
    public String add(){
        System.out.println("执行添加方法");
        System.out.println("UserName" + username);
        System.out.println("PassWord" + password);
        return "add_success";
    }
}

2.jsp页面:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
添加界面
<form action="/web/test/simple.action" method="post">
    UserName:<input name="username"/><br/>
    PassWord:<input name="password" type="password"/><br/>
    <input type="submit" name="提交"/>
</form>
</body>
</html>

3.配置struts.xml

<?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" />
 
  <package name="basicstruts2" namespace="/test" extends="struts-default">
     <action name="simple" class="com.web.www.action.SimpleAction">
         <result name="add_input">/add_input.jsp</result>
         <result name="add_success">/add_success.jsp</result>
     </action>
  </package>

</struts>

步骤:1.部署完程序

          2.在浏览器中输入:http://localhost:8080/web/test/simple

此时,出错了。。。这个报错的是意思是,找不到execute()方法

struts2中动态调用方法报错_第1张图片

         3.利用method关键字,可以在URL中动态调用方法。修改浏览器中的输入为:http://localhost:8080/web/test/simple?method:addInput

此时,还是报错。。。。寻遍度娘,几乎崩溃,结果,解决方法很简单。。。

struts2中动态调用方法报错_第2张图片

解决方案:在struts.xml文件中增加如下配置:<constant name="struts.enable.DynamicMethodInvocation" value="true" />,然后再次重复上面的步骤3,就OK啦~~~

struts2中动态调用方法报错_第3张图片

你可能感兴趣的:(java,struts2,method,动态调用方法)