作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 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/
我是一名优秀的程序员,十分优秀!