【问题标题】:Working with JQWicket's AjaxSlider使用 JQWicket 的 AjaxSlider
【发布时间】:2025-11-26 14:25:01
【问题描述】:

我将再次通过询问基础知识来展示我的菜鸟。此后续问题与线程有关:Accessing javascript (Jquery) variables from Apache Wicket

我开始使用 AjaxSlider 示例,我将值发送回给我,但是如何使用其他参数再次渲染滑块组件?我想更改可以分配给该 AjaxSlider 的最大值。有没有关于这个的api?

[我的目标是创建一个带有百分比的标签(从 0 到 100)和两个滑块,您可以使用它们随意分配百分比。例如。让用户在男性和女性之间分配金钱]这是我目前正在使用的代码:

 add(new AjaxSlider("ajaxSlider1") {
    private static final long serialVersionUID = 1L;

    @Override
    public void onValueChanged(AjaxRequestTarget target, int newValue) {

        System.out.println("selected_value: "+newValue);

    }
});

原始示例可以在这里找到:AjaxSliderExample

感谢所有帮助,感谢您阅读本文!

【问题讨论】:

    标签: java jquery ajax slider wicket


    【解决方案1】:

    您必须从onValueChanged(..) 方法中访问底层jqwicket 的SliderBehavior(例如,在AjaxSlider 中为SliderBehavior 创建一个getter 或使其受到保护)。在此之后,您可以像这样更改滑块的最大值:

    @Override
    public void onValueChanged(AjaxRequestTarget target, int newValue) {
       this.sliderBehavior.option(target, "'max'", "10");
    }
    

    通过这种方式,您可以操作所有可用的滑块选项(请参阅 jqwicket 的 SliderOptions 类或原始 JQuery UI Slider 文档)。

    注意!您也可以继承 jqwicket 的预定义SliderWebMarkupContainer 以达到相同的效果。

    【讨论】:

      【解决方案2】:

      我不熟悉AjaxSlider,但是如果Ajax 请求想要重新渲染任何组件,则必须将组件添加到AjaxRequestTarget

      (对此的限制是,只有带有标记 ID 的组件才能被 Ajax 请求重绘。这意味着您必须在创建这些组件时调用 setOutputMarkupId( true )

      【讨论】: