关于struts2将参数以属性的方式注入到action的疑惑,弄了两天两夜,终于发现问题所在。
最近在弄struts2,用的是struts-2.3.1.2版本,在将参数以属性的方式注入到action的疑惑,碰到个问题。写了一个简单的小程序,在index.jsp页面中...
最近在弄struts2,用的是struts-2.3.1.2版本,在将参数以属性的方式注入到action的疑惑,碰到个问题。写了一个简单的小程序,在index.jsp 页面中
<body>
<a href="success/success!add?username=a&age=1">添加参数</a>
<br />
</body>
在struts.xml配置文件中:
<package name="success" namespace="/success" extends="struts-default">
<global-results>
<result name="error">/error.jsp</result>
</global-results>
<action name="success" class="org.struts2.action.IndexAction">
<result>
/success.jsp
</result>
</action>
</package>
在IndexAction中:
private String username;
private int age;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String add(){
System.out.println("username:" + username);
System.out.println("age:" + age);
if(age!=25){
return ERROR;
}
return SUCCESS;
}
问题如下,在index.jsp中,如果传入的参数为:
username=aa&age=11
则程序运行正常,如果参数为
username=a&age=1"
则程序报错:
java.lang.NoSuchMethodException: org.qwj.struts2.action.IndexAction.setAge([Ljava.lang.String;)
在后台输出中输出:
username:
age:0
也就是说struts根本就没有调用我的set方法,把值注入进去。求解释!
请大伙看完题目,
回答一楼:
在index.jsp中,如果传入的参数为:
username=aa&age=11
则程序运行正常,如果参数为
username=a&age=1
则程序报错:
java.lang.NoSuchMethodException: org.qwj.struts2.action.IndexAction.setAge([Ljava.lang.String;)
在后台输出中输出:
username:
age:0
我已经写清楚了传递的参数是什么?
回答二楼:
另外这个web.xml是正常的,不必质疑,因为username=aa&age=11
则程序运行正常
回答三楼:
我英语还是可以的,所以这种简单的报错信息还是能看懂的,我的意思是我在action中定义的就是int类型的age属性,我如果想用struts给它赋值,当然要给它set方法了。
回答四楼,那个引号是我copy的时候不小心把<a>标签的内容给copy了过来的。 展开
<body>
<a href="success/success!add?username=a&age=1">添加参数</a>
<br />
</body>
在struts.xml配置文件中:
<package name="success" namespace="/success" extends="struts-default">
<global-results>
<result name="error">/error.jsp</result>
</global-results>
<action name="success" class="org.struts2.action.IndexAction">
<result>
/success.jsp
</result>
</action>
</package>
在IndexAction中:
private String username;
private int age;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String add(){
System.out.println("username:" + username);
System.out.println("age:" + age);
if(age!=25){
return ERROR;
}
return SUCCESS;
}
问题如下,在index.jsp中,如果传入的参数为:
username=aa&age=11
则程序运行正常,如果参数为
username=a&age=1"
则程序报错:
java.lang.NoSuchMethodException: org.qwj.struts2.action.IndexAction.setAge([Ljava.lang.String;)
在后台输出中输出:
username:
age:0
也就是说struts根本就没有调用我的set方法,把值注入进去。求解释!
请大伙看完题目,
回答一楼:
在index.jsp中,如果传入的参数为:
username=aa&age=11
则程序运行正常,如果参数为
username=a&age=1
则程序报错:
java.lang.NoSuchMethodException: org.qwj.struts2.action.IndexAction.setAge([Ljava.lang.String;)
在后台输出中输出:
username:
age:0
我已经写清楚了传递的参数是什么?
回答二楼:
另外这个web.xml是正常的,不必质疑,因为username=aa&age=11
则程序运行正常
回答三楼:
我英语还是可以的,所以这种简单的报错信息还是能看懂的,我的意思是我在action中定义的就是int类型的age属性,我如果想用struts给它赋值,当然要给它set方法了。
回答四楼,那个引号是我copy的时候不小心把<a>标签的内容给copy了过来的。 展开
4个回答
展开全部
检查一下web.xml配置文件,看一下有没有加入struts默认的过滤器
<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>
<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>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
setAge([Ljava.lang.String;)
没找到String类型的setAge()方法;你第二种传参是这样的href="success/success!add?username=a&age='1'" ?
估计是参数设置的时候多加了引号,变成String类型的
没找到String类型的setAge()方法;你第二种传参是这样的href="success/success!add?username=a&age='1'" ?
估计是参数设置的时候多加了引号,变成String类型的
更多追问追答
追问
我没有加单引号,我上面的代码都是直接拷贝的,原先是怎么样现在就是怎么样,至于1后面的双引号是拷贝时不小心多拷贝过来的
追答
本地测试无误,都能输出。
所以无解了.....
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
java.lang.NoSuchMethodException: org.qwj.struts2.action.IndexAction.setAge([Ljava.lang.String;)
报的错误是 没有找到setAge(String s) 类型的方法 因为你定义的是setAge(int age). 所以是传参错了
报的错误是 没有找到setAge(String s) 类型的方法 因为你定义的是setAge(int age). 所以是传参错了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
username=a&age=1" 最后那引号去掉
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询