【问题标题】:Wicket CheckBox change visibility of other componentWicket CheckBox 更改其他组件的可见性
【发布时间】:2019-01-23 13:11:51
【问题描述】:

我有一个 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()));
}

}

【问题讨论】:

  • 您不想使用 Ajax 是否有特定的原因?使用简单的 AjaxCheckBox 并覆盖 onUpdate 方法,这将非常容易。
  • 显然.. 但我想知道我必须重写 CheckBox 的哪个方法才能使其在没有 Ajax 的情况下工作

标签: java checkbox datepicker wicket


【解决方案1】:

如果您在单击复选框时不需要触发任何服务器端代码,则可以考虑使用一些简单的 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; 
} }; 

【讨论】:

  • 我想让它与简单的 Java Wicket 代码一起工作。我已经尝试过 CheckBox 中的覆盖方法 onChange(){ .. } 但它似乎不起作用..
  • 您应该重写 wantOnSelectionChangedNotifications() 以强制服务器在每次选择更改时进行往返: // Wicket 7.x new CheckBox("id", model) { protected boolean wantOnSelectionChangedNotifications() { return true; } protected void onSelectionChanged(Boolean newSelection) { // 做点什么,页面会被重新渲染; } };
猜你喜欢
  • 2014-10-14
  • 2018-10-17
  • 2014-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-26
  • 2011-08-27
  • 2021-03-12
相关资源
最近更新 更多