gpt4 book ai didi

java - Wicket:使用 PropertyResolver 可以吗?

转载 作者:行者123 更新时间:2023-12-01 15:38:11 25 4
gpt4 key购买 nike

我有一个对象,在几个组件中我需要渲染它的两个属性并用分隔符连接在一起。如果其中一个属性为 null,则不应显示分隔符,而应仅显示 not null 属性。如果两者都为空,那么它根本不应该显示。

这两个属性的访问方式如下:

thing.getFoo()

thing.getStuff().getBar()

渲染器将是一个具有一个静态方法的类,该方法采用事物类型的实例并返回一个字符串。

问题是,对 thing 和 thing.getStuff() 的结果进行如此多的空检查似乎很丑陋,所以我想知道是否使用 PropertyResolver 来代替。

问题是 Javadoc说它不是 Wicket API 的一部分,并且只有在我知道自己在做什么时才使用它。因此,我认为有一些我应该了解的警告或问题?如果有,它们是什么?

最佳答案

在这种情况下我会使用自定义只读模型。像这样的东西:

private static class ConcatenatingPropertyModel extends AbstractReadOnlyModel<String> {

private List<PropertyModel<String>> models = new ArrayList<PropertyModel<String>>();

public ConcatenatingPropertyModel(Object object, String... props) {
for (String prop : props) {
models.add(new PropertyModel<String>(object, prop));
}
}

@Override
public String getObject() {
// iterate over delegate property models and concatenate
}

@Override
public void detach() {
super.detach();
for (PropertyModel<String> model : models) {
model.detach();
}
}
}

然后你可以像这样使用模型:

new ConcatenatingPropertyModel(thing, "foo", "stuff.bar");

关于java - Wicket:使用 PropertyResolver 可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8537955/

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