DropDownChoice wicket获得价值

时间:2013-07-16 11:52:46

标签: java apache wicket dropdownchoice

所以我在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(至少在我的情况下)。

欢呼声

3 个答案:

答案 0 :(得分:2)

由于您使用DropDownChoice构建PropertyModel,因此初始化期间显示的选项将与您的selected_status变量的值相对应。更改drop_down_status后,propety模型将更新selected_status变量。因此,您应该只需查看该变量即可查看下拉列表中的当前选择。

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

  1. 使用`PropertyModel。这是上面解释的三种解决方案中最干净的。
  2. 如果输入是使用ModelPropertyModel构建的,则可以调用drop_down_status.getModelObject(),然后将返回的对象强制转换回正确的对象类型。
  3. 使用'AjaxFormComponentUpdatingBehavior'在修改对象时触发临时更新。
  4. 使用AjaxFormComponentUpdatingBehavior的示例:

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

    为了重新审视上面提到的内容,模型是Wicket的核心(即MVC =模型,视图,控制器),并且非常有助于熟悉它们的使用。

答案 1 :(得分:0)

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

如果你想随身携带Wicket。阅读模型的用法

答案 2 :(得分:0)

Wicket“动态”更新“selected_status”值。

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

所以它足以从Model值中获取值:)