我正在使用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()
方法似乎是合理的。这是对的,我怎样才能做到这一点?有更好的解决方案吗?
答案 0 :(得分:0)
如果您未在操作配置中指定execute
属性,则默认情况下将运行method
方法。如果你不使用DMI来运行你的方法。 ActionSupport
已采用execute
方法实施method
。但是下面带有感叹号的注释看起来很奇怪。
如果没有执行方法,并且没有指定其他方法 配置框架将引发异常。
无论如何都是如此,如果你有execute方法,那么相反,然后其他方法将执行哪个方法?您可以省略操作配置中的execute
属性,如果没有指定方法,则使用DMI调用操作中的任何方法,包括{{1}}方法。