簡體   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