标签设置为可见而不显示

问题描述 投票:0回答:2

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

java html wicket
2个回答
0
投票

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

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

2
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.