java - Wicket 1.4 中文本字段更改行为的容器可见性控制

标签 java wicket

我有一个输出标记占位符标记设置为 true 的容器。我只想在某个文本字段中输入某个字符串时才显示它。例如,如果我在文本字段中数字“显示”,容器就会出现,如果我数字“隐藏”,它就会消失。我编写了这段代码:

container.setOutputPlaceHolderTag(true);
container.setOuputMarkupId(true);

textfield.add(new OnChangeAjaxBehavior() {

            @Override
            protected void onUpdate(AjaxRequestTarget target) {
                form.modelChanged();

                if ("SHOW".equals(textfield.getModelObject())) {
                    container.setVisible(true);
                } else {

                    container.setVisible(false);
                }
                target.addComponent(container);
}

此代码仅在我编写 SHOW 时才有效,但是当我编写另一个字符串时它不会消失。为了让它消失,我必须刷新它们所处的整个表单(我不想要它)。 我该如何解决这个问题??

一些细节:我引用的所有组件都在一个表单中,并且只有当我刷新表单时 setVisible(false) 才起作用。从现在开始,只有 setVisible(true) 有效,容器似乎停留在可见性 true 上。

最佳答案

此代码有效:

public class HomePage extends WebPage {

    private static final long serialVersionUID = 1L;

    private String someValue;
    private WebMarkupContainer container;

    public HomePage(final PageParameters parameters) {
        super(parameters);
        add(container = container());
        add(textfield());

    }

    private WebMarkupContainer container() {
        WebMarkupContainer wmc = new WebMarkupContainer("container") {

            @Override
            protected void onConfigure() {
                super.onConfigure(); 
                setVisible("SHOW".equals(someValue));
            }

        };
        wmc.setOutputMarkupPlaceholderTag(true);
        return wmc;
    }

    private TextField textfield() {
        TextField tf = new TextField("textfield", new PropertyModel(HomePage.this, "someValue"));
        tf.add(new OnChangeAjaxBehavior() {

            @Override
            protected void onUpdate(AjaxRequestTarget art) {
                //just model update
                art.add(container);
            }
        });
        return tf;
    }

}

关于java - Wicket 1.4 中文本字段更改行为的容器可见性控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20245959/

相关文章:

Java : Changing a binary number bits 0's to 1' s and 1's to 0' s

java - OutputStream 在 InputStream 之后不工作

java - 在浏览器刷新中刷新 Wicket 面板

jsp - Wicket 和 JSP

javascript - 便门。在 AjaxLink Hangler 之前执行 javascript

java - AjaxFormComponentUpdatingBehavior 在 Wicket 8 中不起作用

java - Kotlin:用 'getAuthorities()' 覆盖名为 'val authorities' 的接口(interface)方法

java - 使用子字符串的数组中元素的索引

java - Spring MVC - 将枚举填充到下拉列表

javascript - Wicket jQuery UI 中的 DatePicker 忽略模式和区域设置