Java 在dropDownBox中更改页面时使用了哪种行为
我的droDownBox看起来像: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
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);
}
});