繁体   English   中英

我应该/可以让 Struts 2 约定忘记操作的 execute() 方法吗?

[英]Should / Can I make Struts 2 conventions forget about an action's execute() method?

我正在使用 Struts 2 和struts2-convention-plugin做我的第一步,目前正在使用一些典型的create()edit()view()delete()操作方法处理 CRUD 操作类 ( SongCrudAction )。 所有这些方法都用@Action注释。

通常,我想从ActionSupport继承有用的默认行为,但这也包括继承execute()方法。

使用配置浏览器,我可以看到有一个名为song-crud的动作指向它。 那个song-crud动作已经过时了,我想摆脱它,因为我有自己的动作方法来完成所有需要的操作。 我想,多亏了 Struts2 的约定,虽然我没有在任何地方声明它,但假设了song-crud动作。

在这种特殊情况下,一种可能的解决方案是为execute()方法赋予一些合理的含义,例如我可以将它用于view()操作。 一个缺点是应该根据execute()方法的行为(例如ViewSongAction而不是SongCrudAction )重命名(或注释?)动作类。 否则,查看操作的 URL 将是不合适的(即/view-song?id=5/song-crud?id=5更适合)。

另一方面,重命名类也很丑陋,因为它只是一个 CRUD 而不是视图操作类。

无论如何,普遍的问题仍然存在:每当我从ActionSupport继承时,它都会为我提供一个execute()方法,该方法可能对我正在做的事情有用也可能没有用。

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

如果您未在操作配置中指定method属性, execute方法将默认运行。 如果您不使用DMI来运行您的方法。 ActionSupport已经实现了execute方法,因为它实现了Action接口 但是下面带有感叹号的注释看起来很奇怪。

如果没有 execute 方法,也没有在配置中指定其他方法,框架将抛出​​异常。

无论如何,这是真的,相反,如果您有 execute 方法和其他方法,那么将执行哪个方法? 如果没有指定方法,您可以省略操作配置中的method属性,并使用 DMI 调用操作中的任何方法,包括execute方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM