繁体   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