gpt4 book ai didi

java - Wicket 1.4 中文本字段更改行为的容器可见性控制

转载 作者:行者123 更新时间:2023-12-01 13:47:36 25 4
gpt4 key购买 nike

我有一个输出标记占位符标记设置为 true 的容器。我只想在某个文本字段中输入某个字符串时才显示它。例如,如果我在文本字段中数字“显示”,容器就会出现,如果我数字“隐藏”,它就会消失。我编写了这段代码:

container.setOutputPlaceHolderTag(true);
container.setOuputMarkupId(true);

textfield.add(new OnChangeAjaxBehavior() {

@Override
protected void onUpdate(AjaxRequestTarget target) {
form.modelChanged();

if ("SHOW".equals(textfield.getModelObject())) {
container.setVisible(true);
} else {

container.setVisible(false);
}
target.addComponent(container);
}

此代码仅在我编写 SHOW 时才有效,但是当我编写另一个字符串时它不会消失。为了让它消失,我必须刷新它们所处的整个表单(我不想要它)。我该如何解决这个问题??

一些细节:我引用的所有组件都在一个表单中,并且只有当我刷新表单时 setVisible(false) 才起作用。从现在开始,只有 setVisible(true) 有效,容器似乎停留在可见性 true 上。

最佳答案

此代码有效:

public class HomePage extends WebPage {

private static final long serialVersionUID = 1L;

private String someValue;
private WebMarkupContainer container;

public HomePage(final PageParameters parameters) {
super(parameters);
add(container = container());
add(textfield());

}

private WebMarkupContainer container() {
WebMarkupContainer wmc = new WebMarkupContainer("container") {

@Override
protected void onConfigure() {
super.onConfigure();
setVisible("SHOW".equals(someValue));
}

};
wmc.setOutputMarkupPlaceholderTag(true);
return wmc;
}

private TextField textfield() {
TextField tf = new TextField("textfield", new PropertyModel(HomePage.this, "someValue"));
tf.add(new OnChangeAjaxBehavior() {

@Override
protected void onUpdate(AjaxRequestTarget art) {
//just model update
art.add(container);
}
});
return tf;
}

}

关于java - Wicket 1.4 中文本字段更改行为的容器可见性控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20245959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com