Wicket CheckBox 更改其他组件的可见性
Wicket CheckBox change visibility of other component
我有一个 Wicket 7 CheckBox 和一个隐藏的 DateTextField。
当我单击 CheckBox 时,我希望 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()));
}
}
如果您在单击复选框时不需要触发任何服务器端代码,您可以考虑对 hide/show DateTextField 使用一些简单的 JavaScript 代码。可以使用 JavaScriptHeaderItem 将此代码附加到复选框。您可以在用户指南中找到更多详细信息。
更新
在 Wicket 7.x 你可以试试
new CheckBox("id", model) {
protected boolean wantOnSelectionChangedNotifications() {
return true;
}
protected void onSelectionChanged(Boolean newSelection) {
// do something, page will be rerendered;
} };
我有一个 Wicket 7 CheckBox 和一个隐藏的 DateTextField。 当我单击 CheckBox 时,我希望 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()));
}
}
如果您在单击复选框时不需要触发任何服务器端代码,您可以考虑对 hide/show DateTextField 使用一些简单的 JavaScript 代码。可以使用 JavaScriptHeaderItem 将此代码附加到复选框。您可以在用户指南中找到更多详细信息。
更新
在 Wicket 7.x 你可以试试
new CheckBox("id", model) {
protected boolean wantOnSelectionChangedNotifications() {
return true;
}
protected void onSelectionChanged(Boolean newSelection) {
// do something, page will be rerendered;
} };