标签设置为可见不显示

Label set to visible not showing

我在 class 的容器内添加了一个标签,然后将其设置为不可行,我有一个包含 if 语句的 onSubmit 方法。这是标签现在应该在点击一个时可见的地方。但是它没有出现。

    private Component errorMessage;

    @Override
        protected void onInitialize() {
            super.onInitialize();
        WebMarkupContainer cnt = new WebMarkupContainer("cnt");
            cnt.setOutputMarkupId(true);
        errorMessage = new Label("errorMessageData", "Can not enter a weekend 
        Date, Please enter a weekday").setOutputMarkupId(true);
        cnt.add(errorMessage);
        errorMessage.setVisible(false);
        add(cnt);

public InputForm(String id, final WebMarkupContainer cnt) {

            IndicatingAjaxSubmitLink submitMcb = new IndicatingAjaxSubmitLink("submit") {

                @Override
                protected void onSubmit(AjaxRequestTarget target, Form<?> form) {                       
                            if (!DateUtilities.isWorkDay(mcEntity.getCorrectionDate())) {

                                errorMessage.setVisible(true);
                                return;
                            }
                        }

为了便于阅读,我缩短了代码并删除了相关部分。如果我不将其设置为 false,标签将正确显示并显示在正确的位置,但在 if 语句中将其设置为 false 不会将其删除。我错过了什么?

您需要将标签添加到 AjaxRequestTarget 以反映您所做的更改:

[...]
errorMessage.setVisible(true);
target.add(errorMessage);
return;

除了@Joachim Rohde 所说的之外,您还需要将 errorMessage.setOutputMarkupId(true); 替换为 errorMessage.setOutputMarkupPlaceholderTag(true);,因为您从不可见状态开始。