簡體   English   中英

Wicket可以具有AJAXified下拉菜單嗎?

[英]Can Wicket have AJAXified drop-down menus?

我需要用Wicket創建一個網頁,該網頁列出了下表:

+------------+---------+
|  Category  |  Value  |
+------------+---------+
|    CatA    |  ValA   |
+------------+---------+
|    CatB    |  ValB   |
+------------+---------+
|    CatC    |  ValC   |
+------------+---------+
|    CatD    |  ValD   |
+------------+---------+
|    CatE    |  ValE   |
+------------+---------+

該表中的每個項目(標題除外)都應該是一個下拉菜單。 有兩個問題。 首先,每個值列表取決於其類別列表。 舉一個簡單的例子,CatA可能包含“運動”,“汽車”和“動物”作為選項。 然后,如果選擇“運動”,則ValA會填充“棒球”,“足球”和“籃球”。 但是,如果選擇“汽車”,則ValA會填充“沃爾沃”,“薩博”和“梅賽德斯”。

另一個問題是除非填充了行上方的行,否則不得顯示行。因此,在頁面加載時,只有CatA和ValA應該可見。 填充ValA之后,CatB和ValB變為可見。 如果填寫了ValB,則出現CatC和ValC,&c。

我的問題是:這可以通過純Wicket實現,最好是異步實現嗎? 我已經看過Wicket API,但對它卻不太熟悉,因此我很容易錯過了符合我要求的類。 我的第一個想法涉及使用DropDownChoice及其onSelectionChanged()方法,但似乎並未進行AJAX化。

如果用Wicket絕對不可能發生這種情況,我會考慮使用JavaScript,但這確實是不得已的方法。

我不一定需要任何代碼-它可能甚至無法工作,因為這實際上是從我的實際項目需求中精簡而來的-但我希望將其指向有用的API類或現有的實現等。

編輯:
好的,donroby的答案在第一部分效果很好(使值取決於類別),但第二部分我仍然迷失了(隱藏行,直到所有前面的行都被填滿)。 最初,我認為可以通過附加LoadableDetachableModel來實現,但現在我意識到那不是這些。 有沒有辦法切換組件是否在頁面上?

Wicket Ajax示例中的一些示例代碼可能會有所幫助,尤其是Drop Down Choice Example

您絕對可以通過附加Ajax行為在Wicket中完成這種事情,並最大程度地減少為了實現它而必須編寫的JavaScript數量。

它適用於檢票口和Ajax。 創建表格單元格時,必須創建一個包含該DropDownChoice的檢票口面板。 如果需要更新值,則必須更新下拉選擇模型值並執行target.addComponent(DropDownChoice),其中target是AjaxRequestTarget。 另外,下拉選項必須將setOutputMarkupId設置為true才能更新。 我認為如果需要,我可以為您提供一些代碼。

看起來第二部分的答案與在正確的時間調用從Component繼承的setVisible()方法有關。 不過,仍然會給donroby接受的答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM