【发布时间】:2011-07-20 12:00:33
【问题描述】:
我在struts 2中创建了一个动作
class MyAction extends ActionSupport {
private List<User> users;
//getters and setters users
public String execute(){
users=//code to get users;
return SUCCESS;
}
}
我用 url /MyAction 映射了这个动作类,成功的结果是一个 jsp,它在我打开 url 时显示用户:
http://localhost:8080/MyAction.action
当我打开页面时:
http://localhost:8080/MyAction.action?xyz=123
我没有收到任何错误。但是当我打开页面时:
http://localhost:8080/MyAction.action?users=123
Struts 尝试调用setUsers() 方法,但未能将 123 转换为用户列表。因此我得到一个转换错误。
由于该操作不需要任何参数,因此它的行为方式应该与提供的所有额外参数相同。它不应该只忽略少数并为其他人显示错误。
对于这个问题,我能够找到的解决方案是将所有 setter 方法设为私有,但预期参数的 setter 除外。
谁有更好的解决方案?
【问题讨论】:
-
您在调用 action?users=123 时强制调用 setUsers()。你自己已经回答了大部分。为什么还要用这个查询字符串调用操作?
-
感谢您的回复。我只是想保护我的网站免受讨厌的用户的侵害。
标签: validation struts2