3

我正在使用 Struts 2 和struts2-convention-plugin迈出第一步,目前正在SongCrudAction使用一些典型create()edit()view()delete()action 方法处理一个 CRUD 动作类 ( )。所有这些方法都用@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 异常忘记execute()我的 CRUD 操作类中的方法似乎是合理的。这是对的,我怎样才能做到这一点?有更好的解决方案吗?

4

1 回答 1

0

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

如果配置中没有指定执行方法和其他方法,框架将抛出​​异常。

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

于 2013-03-07T12:27:26.173 回答