Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在dropDownBox中更改页面时使用了哪种行为_Java_Wicket - Fatal编程技术网

Java 在dropDownBox中更改页面时使用了哪种行为

Java 在dropDownBox中更改页面时使用了哪种行为,java,wicket,Java,Wicket,我的droDownBox看起来像: add(new DropDownChoice<String>("hladaneSlovo", new HladaneSlova()).add(new AjaxEventBehavior("onchange") { private static final long serialVersionUID = 1L; @Override protected void

我的droDownBox看起来像:

        add(new DropDownChoice<String>("hladaneSlovo", new HladaneSlova()).add(new AjaxEventBehavior("onchange") {

            private static final long serialVersionUID = 1L;

            @Override
            protected void onEvent(AjaxRequestTarget target) {
                target.prependJavaScript("window.location.href='" + urlFor(VyjimkyPage.class, null) + "'");

            }

        }));
add(新的下拉选项(“hladaneSlovo”,新的HladaneSlova()).add(新的AjaxEventBehavior(“onchange”){
私有静态最终长serialVersionUID=1L;
@凌驾
受保护的void onEvent(AjaxRequestTarget目标){
target.prependJavaScript(“window.location.href=”+urlFor(VyjimkyPage.class,null)+“”;
}
}));

这是我在我的主页。还有一些默认值。选择其中一个选项时如何更改页面?我现在创建的实现的问题是默认值。当我选择已选择的项目时,没有任何操作。当我选择value时,调用什么behavor?

如果要更改页面,则无需使用AJAX,因此可以执行以下操作:

DropDownChoice<String> dropDownChoice = new DropDownChoice<String>("hladaneSlovo", new HladaneSlova()) {
        @Override
        protected boolean wantOnSelectionChangedNotifications() {
            return true;
        }

        @Override
        protected void onSelectionChanged(String newSelection) {
            setResponsePage(NewPage.class);
        }
};
DropDownChoice-DropDownChoice=new-DropDownChoice(“hladaneSlovo”,new-HladaneSlova()){
@凌驾
受保护的布尔wantOnSelectionChangedNotifications(){
返回true;
}
@凌驾
受保护的void onselection已更改(字符串newSelection){
setResponsePage(NewPage.class);
}
};

在您的实现中,该值仍然是默认值,因为如果要在javascript事件触发时更新模型,则需要使用
ajaxFormComponentUpdateingBehavior
行为。

如果需要所选值通过验证并更新下拉列表的模型,而不是使用AjaxEventBehavior,它不会更新模型,您应该使用AjaxFormChoiceComponentUpdateBehavior(而不是不能正确处理选项或组的AjaxFormComponentUpdateBehavior)


注意:实现面临的部分问题是链接add()方法。add方法的返回值是一个组件,但它不是您刚才添加的组件,而是您要添加到的组件。添加AjaxEventBehavior时,应将其添加到要侦听事件的组件中。

您希望的行为是什么?是否要根据DDC选择更改页面?您可以从选择模型派生目标页面吗?您真的需要通过Ajax来实现这一点吗?我不这么认为。如果我在下拉框中选择任何项目,我想更改页面。这个例子不起作用,如果我选择了所选的项目,那么我什么也没发生,但是问题仍然是一样的。如果选择了某个值,而我选择了该值,则我将不选择该值happens@jordeu当前位置这也是我的目标。但我在理解胡迪语方面有困难。
DropDownChoice choice = new DropDownChoice("hladaneSlovo", new HladaneSlova());
add(choice);
choice.add(new AjaxFormChoiceComponentUpdatingBehavior()
{
    @Override
    protected void onUpdate(AjaxRequestTarget target)
    {
        //The model is now updated so you can push to DB or pass as PageParameter to the next page

        // throw a RedirectException so that the url will be updated for your page
        throw new RedirectException(VyjimkyPage.class); 
    }
});