gpt4 book ai didi

jsf - 如何在jsf页面中设置bean属性值?

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

我有 Facelet 组件,并且有它的支持 bean。当我将我的组件包含到某个页面时,我将 bean 从页面传递到我的组件:

<ui:include src="./WEB-INF/templates/myTemplate.xhtml">
<ui:param name="pageBean" value="#{thisPageBean}" />
</ui:include>

我的组件也有支持 bean,我尝试将调用页面 bean 的值传递给我的:

<c:set target="#{componentBean}" property="field" value="#{pageBean.field}" />

但是这个方法不行吗?有某种方法可以将值从一个 bean 传递到另一个 bean 吗?

我正在尝试创建困难的自定义组件,该组件必须对传递给它的内容进行一些验证和其他操作?也许我的方式不对?

最佳答案

您可以将 bean 作为组件的属性传递(我假设当您说“组件”时您正在使用 ui:component )。

对于组件:

<ui:component binding="#{componentBean.myComponent}">
<f:attribute name="foo" value="#{pageBean.field}" />
<h:outputText value="#{componentBean.something}" />
</ui:component>

您可以使用以下方法获得一个支持 bean:

private Object field;
private UIComponent component;

public void setMyComponent(UIComponent c) { component = c; }
public UIComponent getMyComponent() { return component; }

private void lookupFields() {
field = component.getAttributes().get("foo");
}

public String getSomething() {
if (field == null) {
lookupFields();
}
return "" + field;
}

不是很优雅,但我不太熟悉 Facelets 的机制,这是我想到的第一件事。请注意,保存 View 时属性可能会保留 - 我不记得在属性映射上设置的内容。

关于jsf - 如何在jsf页面中设置bean属性值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1094910/

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