如果 Wicket 中的输入文本字段不为空,则显示按钮

Show button if input text field is not empty in Wicket

有输入文本字段和提交按钮。我想显示按钮文本字段不为空,否则按钮应该不可见。

            TextArea<String> textMessageField = new TextArea<>("textMessage", textMessageModel);
            Button submitBtn = new Button("saveReminderButton") {
                @Override
                protected void onConfigure() {
                    super.onConfigure();
                    String text = textMessageField.getModelObject();
                    setVisible(text != null && !text.isEmpty());
                }
            };

            textMessageField.add(new OnChangeAjaxBehavior() {
                @Override
                protected void onUpdate(AjaxRequestTarget target) {
                    target.add(submitBtn);
                }
            });
            submitBtn.setOutputMarkupId(true);

我正在尝试在 onConfigure 中使用 setVisible 方法,但它不起作用。我尝试改用 setEnabled 并且它正在工作,但我需要与 hide/show 按钮

相同的功能

由于您使按钮不可见,因此您需要使用 submitBtn.setOutputMarkupPlaceholderTag(true); 而不是 submitBtn.setOutputMarkupId(true);

这很重要,因为如果没有 setOutputMarkupPlaceholderTag(true) Wicket,Wicket 将不会为此组件呈现任何内容。使用 setOutputMarkupPlaceholderTag(true) 它将呈现 <htmlElement id="someId"></htmlElement>。这样 Wicket Ajax 就可以在 DOM 中找到它并用可见的 HTML 替换它。