首页 > 解决方案 > 标签设置为可见不显示

问题描述

我在我的类的容器内添加了一个标签,然后将其设置为不可行,我有一个包含 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 不会将其删除。我错过了什么?

标签: javahtmlwicket

解决方案


除了@Joachim Rohde 所说的你需要替换errorMessage.setOutputMarkupId(true);的内容,errorMessage.setOutputMarkupPlaceholderTag(true);因为你从一个不可见的状态开始。


推荐阅读