我有一个Wicket 7 CheckBox和一个隐藏的DateTextField。 当我单击一个复选框时,我希望显示DateTextField,反之亦然。 因此,我已经在WebMarkUpContainer中添加了DateTextField。 如果可能的话,我不想使用Ajax。 问题在于WebMarkUpContainer始终处于隐藏状态。 一般来说,我的代码如下:
class ResultsPanel extends Panel{
private static final class ResultsPage {
final DateTextField startDate = new DateTextField("startDate", new DateTextFieldConfig().withLanguage("el");
final CheckBox checkBox = new CheckBox("checkBox");
final WebMarkupContainer wmc = new WebMarkupContainer("wmc");
// bla bla bla
public Results(String id, CompoundPropertyModel propertyModel) {
super(id, propertyModel);
add(checkBox);
wmc.setOutputMarkupPlaceholderTag(true);
wmc.add(startDate);
add(wmc.setVisible(false));
}
public ResultsPanel(String id){
super(id);
add(new ResultsPage("resultsPage", new CompoundPropertyModel()));
}
}
答案 0 :(得分:0)
如果您在单击复选框时不需要触发任何服务器端代码,则可以考虑使用一些简单的JavaScript代码来隐藏/显示DateTextField。可以使用JavaScriptHeaderItem将此代码附加到复选框。您可以在用户指南中找到更多详细信息。
更新
在Wicket 7.x中,您可以尝试
new CheckBox("id", model) {
protected boolean wantOnSelectionChangedNotifications() {
return true;
}
protected void onSelectionChanged(Boolean newSelection) {
// do something, page will be rerendered;
} };