sách gpt4 ai đã đi

java - 让 JSF 从 EL 而不是 bean 字段访问 Map 值?

In lại 作者:塔克拉玛干 更新时间:2023-11-03 04:47:14 25 4
mua khóa gpt4 Nike

是否有任何正确的方法来覆盖 JSF 从表达式语言访问 beans 字段的方式?这个想法是模仿这种行为以访问 Map值,其中 bean 字段将是映射键。

换句话说,无论如何都可以使用#{beanContainingNestedMap.keyOfSaidNestedMap}吗? , 就像 keyOfSaidNestedMapĐúngbeanContainingNestedMap的领域?

如果没有,我还有什么其他解决方案?


Ví dụ:

Holder.java

public class Holder {

private Map objects = new HashMap();

public void add(String key, Object value) {
objects.put(key, value);
}

public Object getObject(String key) {
return objects.get(key);
}

}

ExampleBean.java

public class ExampleBean {

private Holder holder = new Holder();

public ExampleBean() {
holder.add("foo", 42);
holder.add("bar", 'X');
}

public Holder getHolder() {
return holder;
}

}

example.xhtml

 


如果我可以做类似的事情(某种伪代码,因为我不知道这样的方法是否存在 ;) ),那就太好了:

@Override // override JSF's (if any...)
public Object resolveEl(String el) {
thử {
super.resolveEl(el);
} catch (ElException e) {
Object bean = e.getBean();
String fieldName = e.getFieldName();
if (bean instanceof Holder) {
Holder holder = (Holder) bean;
Object value = holder.getObject(fieldName);
if (value == null) {
throw e;
} khác {
return value;
}
}
}
}

1 Câu trả lời

EL可以直接使用map。

持有人.java

public class Holder {

private Map objects = new HashMap();

public void add(String key, Object value) {
objects.put(key, value);
}

public Map getObjectsMap() {
return objects;
}

}

EL

#{exampleBean.holder.objectsMap[your-key]}

关于java - 让 JSF 从 EL 而不是 bean 字段访问 Map 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17884028/

25 4 0
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com