标签设置为可见不显示
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);
,因为您从不可见状态开始。
我在 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);
,因为您从不可见状态开始。