URI VS方法名在Action类 - Struts 2的

URI VS方法名在Action类 - Struts 2的

问题描述:

在我的Action类中,我定义的方法名称如下:URI VS方法名在Action类 - Struts 2的

public String doAddUser(){} 
public String doDeleteUser(){} 

在struts.xml中我已经配置如下:

<action name="*User" class="MyAction" method="do{1}User"></action> 

从URI,如果我请求像AddUser或DeleteUser,它的工作。但我想请求像addUser或deleteUser(以小写字母开头)。我该如何实现这个目标?

URL区分大小写,所以下面的代码会使addUser和deleteUser工作,但不会AddUser和DeleteUser。如果你想同时支持,你需要创建多个映射,但我认为你不应该为此而努力。

<action name="*User" class="MyAction" method="{1}User"></action> 

public String addUser(){} 
public String deleteUser(){} 

为什么我问这个问题,在Struts1.x,我们有LookupDispatchAction概念。当用户点击一个url(对于ex,addUser)时,我们可以用任何名称(即,doAddUser)调用我们定义的方法。在这种情况下,我们可以解决我的问题。但是Struts 2.x没有这样的可能性(据我所知)。

听起来像是您在寻找dynamic method invocation。基本上,如果你有一个映射为myAction的动作,那么你可以通过myAction!addUser来调用addUser()方法。 myAction!execute相当于默认的myAction

+0

感谢您的回复。您建议的方法告诉URL和方法名称应该相同。但我只想改变方法name.ie.的情况下,如果用户点击addUser,我必须调用AddUser方法。是否有任何其他解决方法只是忽略方法名称的大小写敏感性,而不编写像通配符映射那样的单个映射,这些映射用于通过单个操作配置为多个URL调用多个方法。 – kaluva 2011-03-04 06:49:06

+0

URL和方法名称都区分大小写,所以我不知道任何设置,如您所描述的。另外,请注意'AddUser'作为方法名称偏离了Java语言的既定编码约定。 – 2011-03-04 13:58:55

+0

好的。其实我的方法名称是这样的:对于uri addUser,我的方法名称是doAddUser()。我认为这遵循java命名约定。为什么我问这个问题,在Struts1.x中,我们有LookupDispatchAction概念。当用户点击一个url(对于ex,addUser)时,我们可以用任何名称(即,doAddUser)调用我们定义的方法。在这种情况下,我们可以解决我的问题。但是Struts 2.x没有这样的可能性(据我所知)。我们可以通过提供多个映射来实现这一点,但我不希望在我的情况下所有映射具有相同的resut名称(在下一条评论中继续...) – kaluva 2011-03-04 14:34:59