我做了一些阅读和演奏,我仍然有一些问题,我希望有人可以回答:
那么,我可以在一个JSF页面中使用两个或更多个支持bean吗?
<h:intputText value="#{myFirstBean.firstProperty}" />
<h:intputText value="#{mySecondBean.secondProperty}" />
如果可以的话,我为什么不这样做? (我想我不应该,因为没有人这样做)
如果我不能,为什么?
另外,我在某处阅读“在页面上加载框架将实例化支持bean,并填充它,如果它是一个回发”。他们说 支持bean但是我无法理解框架如何知道哪个支持bean来实例化。
答案 0 :(得分:4)
让我们澄清一些术语:
所以,是的,您可以在单个JSF页面中使用两个或更多个托管bean,但是将与一个页面相关的UI组件绑定,侦听器,逻辑等拆分为两个或更多支持bean仍然是可行的但非常不受欢迎,可能会导致很多问题和糟糕的代码。
答案 1 :(得分:3)
为什么不呢?这是完全合法的事情。
通常,页面应该与一个bean相关联(为了良好的结构),但是如果你想要在每个页面上显示当前时间,你可以自由地引用你的timeBean.currentTime
,以及其他事情(当然,最好使用include / templating)。
答案 2 :(得分:1)
其他问题已经得到解答。但是:
另外,我在某处阅读“在页面上加载框架将实例化支持bean,并填充它,如果它是一个回发”。他们说支持bean但我无法理解框架如何知道要实例化哪个支持bean。
豆子的名字已经解决了。例如,#{myFirstBean.firstProperty}
查找名为'myFirstBean'的bean(类MyFirstBean
的实例)。您可以按以下方式调整名称:
@ManagedBean(name = "foo")
public class SomeClass { ... }
然后你可以通过#{foo.firstProperty}
引用它。