0

所以我在 Wicket 中有我的 DropDownChoice:

final DropDownChoice drop_down_status = new DropDownChoice<String>("status", new PropertyModel<String>(this,"selected_status"), STATUS_LIST);

     form.add(drop_down_status);

如何获得选定的值?我必须在按下另一个按钮后获取它并从中准备 sql 语句。

drop_down_status.getRawInput() 和 drop_down_status.getInput() 返回 null (至少在我的情况下)。

干杯

4

3 回答 3

2

由于您正在DropDownChoice使用 a构建您的PropertyModel,因此在初始化期间显示的选择将对应于您的selected_status变量的值。更改时drop_down_status,属性模型将更新selected_status变量。因此,您应该能够只查看该变量以查看下拉列表中的当前选择。

过去从各种输入中获取值时我感到很沮丧,但发现以下方法的工作相当一致(选择一个):

  1. 使用`PropertyModel。这是上面解释的三种解决方案中最干净的。
  2. 如果输入是使用 a 构造的,Model或者PropertyModel您可以调用drop_down_status.getModelObject()then 将返回的对象类型转换回正确的对象类型。
  3. 修改对象时,使用“AjaxFormComponentUpdatingBehavior”触发临时更新。

使用 AjaxFormComponentUpdatingBehavior 的示例:

  drop_down_status.add(new AjaxFormComponentUpdatingBehavior("onChange") {
      @Override
      protected void onUpdate(AjaxRequestTarget target) {
          selected_status = (Status) getFormComponent().getConvertedInput();
      }
  }

重申一下上面所说的,模型是 Wicket 的核心(即 MVC=Model,View,Controller),它对熟悉它们的用法有很大帮助。

于 2013-07-16T13:58:40.393 回答
0

Wicket 会“即时”更新“selected_status”值。

new PropertyModel<String>(this,"selected_status")

所以它足以从模型价值中获得价值:)

于 2013-08-07T09:14:45.480 回答
0

您将模型传递给 DDC。在你的情况下,一个属性模型。成功提交后,该值将传输到模型对象“selected_value”。

如果你想用 Wicket 去任何地方。阅读模型的使用

于 2013-07-16T12:13:43.370 回答