gpt4 book ai didi

java - JSF组件的动态值绑定(bind)

转载 作者:搜寻专家 更新时间:2023-10-31 08:16:12 24 4
gpt4 key购买 nike

如何在运行时动态绑定(bind)某个组件的值?例如,我有以下组件标签,

<h:inputText value="#{bean.someProp}" />

在我的例子中,“#{bean.someProp}”仅在运行时已知。

实现此目标的最佳策略是什么?

我应该遍历组件树并以编程方式设置值绑定(bind)吗?如果是,我应该在哪个 JSF 生命周期阶段进行遍历?

最佳答案

您可以将它绑定(bind)到 Map<String, Object> String 所在的 bean 属性key 是或多或少的动态属性名称。您可以通过以下方式访问 EL 中的映射值:

<h:inputText value="#{bean.map.someProp}" />

<h:inputText value="#{bean.map['someProp']}" />

甚至可以更动态地完成 someVar实际上解析为 String "someProp" 的值:

<h:inputText value="#{bean.map[someVar]}" />

你只需要确保Map在 bean 初始化期间创建,否则 JSF 无法访问映射值。即 EL 不会为您预先创建“嵌套属性”。因此,例如直接实例化:

public class Bean {
private Map<String, Object> map = new HashMap<String, Object>();
}

.. 或在构造函数内部或 @PostConstruct如果你愿意。

关于java - JSF组件的动态值绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2226122/

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