2012-06-22 45 views
0

我正在使用Grails ajaxflow插件來創建基本嚮導。我遇到的一個問題是默認使用的控制器操作命名。具體來說,假設我有一個名爲ThingController的控制器,其中默認流名爲pagesFlow。這導致執行期間的嚮導url等。如何更改或映射Grails ajax webflow操作名稱?

/thing/pages?execution... 

通常,該向導旨在允許添加「事物」。可以說,我寧願表明這樣的網址..

/thing/add?execution... 

有沒有一種方法,或者通過改變pagesFlow定義,或者通過自定義URL映射到實現這一結果?

我簡單地嘗試過兩次都沒有運氣。 ajaxflow插件似乎需要這個默認命名,並且tbh我還不夠理解url映射。

回答

1

我沒有專門使用ajaxFlow,但我曾經使用過grails webflow。一般來說,你所要求的是不可能的,因爲webflow基本上管理着不同的「動作」,比如添加/刪除/更新等,以便在場景後面進行流動,所以只有流程名稱「pages」被暴露。

但是,如果您真的想要一個獨特的名稱,唯一可以考慮的解決方法是使用webflow的子流功能。 webflow文檔是grails doc http://grails.org/doc/latest/guide/theWebLayer.html#subflowsAndConversations的一部分。

這個想法是,一個子流程就是您定義的另一個流程。流程可以調用另一個流程並讓第二個流程將結果返回到第一個流程。所以在你的情況下,你會有主要的流程調用addFlow,updateFlow等等。從概念上講,即使你的所有操作屬於單一流程,但沒有任何東西阻止你將每個流程分解成它自己的流程。這樣你可以讓你的網址反映你的行爲。您甚至可以在不同的控制器中定義您的子流程,以便您可以影響url中的控制器名稱。

+0

我最終得出了這個結論,你的答案絕對讓我更快。謝謝。事實上,webflows最終導致我的問題過度,導致比解決更多的麻煩。真不幸。 –