应该/我能否使Struts 2约定忘记一个动作的execute()方法?

时间:2013-03-07 10:46:57

标签: java struts2 crud struts2-convention-plugin dmi

我正在使用Struts2和struts2-convention-plugin执行我的第一步,目前正在处理CRUD操作类(SongCrudAction),其中包含一些典型的create()edit(),{{ 1}}和view()动作方法。所有这些方法都使用delete()进行注释。

通常,我希望从@Action继承有用的默认行为,但这也包括继承ActionSupport方法。使用配置浏览器,我可以看到有一个名为execute()的动作指向它。那首歌曲的行为已经过时了,我想摆脱它,因为我已经拥有了自己的所有操作方法。我想,感谢struts2-conventions,虽然我没有在任何地方声明,但是假设了歌曲行为。

在这种特殊情况下,一种可能的解决方案是为song-crud方法提供一些合理的含义,例如我可以用它来进行“查看”操作。缺点是应该根据execute()方法的行为(例如execute()而不是ViewSongAction)重命名(或注释?)动作类。否则,视图操作的网址将不合适(即SongCrudAction/view-song?id=5更合适)。另一方面,重命名该类也很难看,因为它只是一个CRUD而不是一个视图动作类。

无论如何,一般问题仍然存在:每当我从/song-crud?id=5继承时,它都会向我展示ActionSupport方法,这可能对我正在做的事情有用,也可能没用。

因此,以某种方式告诉Struts2异常忘记我的CRUD操作类中的execute()方法似乎是合理的。这是对的,我怎样才能做到这一点?有更好的解决方案吗?

1 个答案:

答案 0 :(得分:0)

如果您未在操作配置中指定execute属性,则默认情况下将运行method方法。如果你不使用DMI来运行你的方法。 ActionSupport已采用execute方法实施method。但是下面带有感叹号的注释看起来很奇怪。

  

如果没有执行方法,并且没有指定其他方法   配置框架将引发异常。

无论如何都是如此,如果你有execute方法,那么相反,然后其他方法将执行哪个方法?您可以省略操作配置中的execute属性,如果没有指定方法,则使用DMI调用操作中的任何方法,包括{{1}}方法。