Wicket 7中的Ajax单选按钮
我创建了一个面板,在这个面板中,我试图将实时Ajax行为添加到一些广播选项中 问题是我无法设置当前活动选项,在setter setSelectedLang中,参数始终为null,即使我单击不同的单选选项。这怎么能解决呢 我正在运行Wicket 7.5.0版Wicket 7中的Ajax单选按钮,ajax,wicket,wicket-7,Ajax,Wicket,Wicket 7,我创建了一个面板,在这个面板中,我试图将实时Ajax行为添加到一些广播选项中 问题是我无法设置当前活动选项,在setter setSelectedLang中,参数始终为null,即使我单击不同的单选选项。这怎么能解决呢 我正在运行Wicket 7.5.0版 package xx.yy.admin import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.form.AjaxFormChoiceCo
package xx.yy.admin
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.form.AjaxFormChoiceComponentUpdatingBehavior;
import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.RadioChoice;
import org.apache.wicket.markup.html.panel.GenericPanel;
import org.apache.wicket.model.PropertyModel;
import xx.yy.admin.Survey;
import xx.yy.admin.AjaxListener;
import java.util.Arrays;
import java.util.List;
public class LanguageSelectionPanel extends GenericPanel<Void> {
private static final String SVENSKA = "Sve";
private static final String ENGELSKA = "Eng";
private AjaxListener listener;
private Form<Void> form;
private List<String> languages = Arrays.asList(SVENSKA, ENGELSKA);
private Survey surveyModel;
private String selectedLang = "Sve";
private RadioChoice languageRadioChoice;
public SurveyLanguageSelectionPanel(String id, Survey survey, AjaxListener listener) {
super(id);
this.surveyModel = survey;
this.listener = listener;
initialize();
}
protected void initialize() {
super.onInitialize();
form = new Form<Void>("langform") {
@Override
protected void onSubmit() {
info("Init : ");
}
};
add(form);
languageRadioChoice = getLanguageSelection();
form.add(languageRadioChoice);
}
private RadioChoice getLanguageSelection() {
RadioChoice<String> langRadioChoice = new RadioChoice<>("languages",
new PropertyModel<>(this, "selectedLang"), languages);
// Add Ajax Behaviour...
langRadioChoice.add(new AjaxFormComponentUpdatingBehavior("onchange") {
protected void onUpdate(AjaxRequestTarget target) {
listener.onUpdate(target);
}
});
return langRadioChoice;
}
public void setSelectedLang(String selectedLang) {
this.selectedLang = selectedLang;
}
public String getSelectedLang() {
return selectedLang;
}
}
html代码:
<body>
<wicket:panel>
<form style="" class="" wicket:id="langform">
<wicket:enclosure child="languages">
<span wicket:id="languages"></span>
</wicket:enclosure>
<br/>
<hr/>
</form>
</wicket:panel>
</body>
</html>
您必须使用AjaxFormChoiceComponentUpdatingBehavior,如下所述: i、 e
您必须使用AjaxFormChoiceComponentUpdatingBehavior,如下所述: i、 e
嗨,代码不是很清楚。我看到您在构造函数中使用方法setSelectedLanguage:this.selectedLanguage=this.setSelectedLanguage SurveyModel.getLanguage;但我在你们班上找不到。也许你的意思是方法setSelectedLang,但最后一个没有返回任何值,是无效的。我做了编辑。谢谢更新。尽管如此,您的PropertyModel使用selectedLang作为表达式,但真正的属性名称是selectedLanguageUpdate,同样的问题嗨,代码不是很清楚。我看到您在构造函数中使用方法setSelectedLanguage:this.selectedLanguage=this.setSelectedLanguage SurveyModel.getLanguage;但我在你们班上找不到。也许你的意思是方法setSelectedLang,但最后一个没有返回任何值,是无效的。我做了编辑。谢谢更新。尽管如此,您的PropertyModel使用selectedLang作为表达式,但真正的属性名是selectedLanguageUpdate,同样的问题
langRadioChoice.add(new AjaxFormChoiceComponentUpdatingBehavior() {
protected void onUpdate(AjaxRequestTarget target) {
listener.onUpdate(target);
}
});