[英]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.