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

标签 jsf facelets

我有 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/

相关文章:

jsf - 通常验证失败时 JSF 中的条件样式

css - 背景图片不包括

ajax - 如何减少 p :ajax during e. g 的请求负载。 p:dataTable 分页

jsf - JSF 中的自定义 Facelet 组件

parameters - JSF参数传递

security - Wildfly 在 Web 应用程序中注销后缓存角色

java - 为什么 UIComponentBase 类不公开 setAttribute() 方法?

JSF 中的 Javascript - 没有库、没有名称和正文内容的 outputScript

jsf - 在 facelets JSF 2 中输出 map 集合

JSF 仅适用于 .xhtml 结尾