• Struts2动态方法调用小问题


    网址:http://www.sjsjw.com/kf_code/article/032909ABA001520.asp

    今天,在用Struts2中Action接收参数时,在URL中输入:http://localhost:8080/Struts2_03/user/user!add,出错: 

    There is no Action mapped for namespace [/user] and action name [user!add] associated with context path [/Struts2_03].

    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="font" namespace="/user" extends="struts-default">
    		      
           <action name="user" class="com.zhang.HelloAction">
               <result >
                 /Studentadd_success.jsp
               </result>
            </action>
            
        </package>
    </struts>
    

    HelloAction.java:

    package com.zhang;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    public class HelloAction extends ActionSupport
    {
    	private String name;
    	private int age;
    	
    	public String add()
    	{
    		System.out.println("name="+name);
    		System.out.println("age+"+age);
    		return SUCCESS;
    	}
    
    	public String getName()
    	{
    		return name;
    	}
    
    	public void setName(String name)
    	{
    		this.name = name;
    	}
    
    	public int getAge()
    	{
    		return age;
    	}
    
    	public void setAge(int age)
    	{
    		this.age = age;
    	}
    	
    }
    


    找来找去,原来是动态方法调用(DMI)这方面出了问题; 
    原因:struts2中默认不允许使用DMI; 
    所以:需要在配置文件中将这句加上: <constant name="struts.enable.DynamicMethodInvocation" value="true"/> 这样大家在地址栏动态输入就可以得到预期的页面; 
    这个属xìng是设置Struts2是否支持动态方法调用,为true时是支持,为false时是关闭动态方法调用! 
    配置后的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.enable.DynamicMethodInvocation" value="true" />
        <constant name="struts.devMode" value="true" />
    	<package name="font" namespace="/user" extends="struts-default">
    		      
           <action name="user" class="com.zhang.HelloAction">
               <result >
                 /Studentadd_success.jsp
               </result>
            </action>
            
        </package>
    </struts>
    
  • 相关阅读:
    浏览器HTML5支持程度测试
    Unit testing Cmockery 简单使用
    Linux likely unlikely
    Android development tools line_endings hacking
    Linux C enum
    Android 系统内置App JNI
    Android Broadcast Receiver
    Android获取SharedPreferences失败,且App无法启动
    Sublime-text markdown with Vim mode and auto preview
    遍历Map key-value的两种方法
  • 原文地址:https://www.cnblogs.com/shubiao/p/3977403.html
Copyright © 2020-2023  润新知