Java JSF在一个页面上有多个备份bean
我读了一些书,玩了一些游戏,我仍然有一些问题,我希望有人能回答: 那么,我可以在一个JSF页面中使用两个或更多的支持bean吗Java JSF在一个页面上有多个备份bean,java,jsf,facelets,Java,Jsf,Facelets,我读了一些书,玩了一些游戏,我仍然有一些问题,我希望有人能回答: 那么,我可以在一个JSF页面中使用两个或更多的支持bean吗 <h:intputText value="#{myFirstBean.firstProperty}" /> <h:intputText value="#{mySecondBean.secondProperty}" /> 如果可以,我为什么不做呢?(我想我不应该这样做,因为没有人这样做) 如果我不能,为什么 此外,我在某个地方读到类似“在页面
<h:intputText value="#{myFirstBean.firstProperty}" />
<h:intputText value="#{mySecondBean.secondProperty}" />
如果可以,我为什么不做呢?(我想我不应该这样做,因为没有人这样做)
如果我不能,为什么
此外,我在某个地方读到类似“在页面加载时,框架将实例化支持bean,如果它是回发,则填充它”。他们说是支持bean,但我无法理解框架如何知道实例化哪个支持bean。为什么不?这是一件完全合法的事情。
通常,一个页面应该与一个bean相关联(为了良好的结构),但是如果您想在每个页面上显示当前时间,您可以自由引用
timeBean.currentTime
,以及其他内容(当然,这里最好使用include/templating)。让我们澄清一些术语:
- 托管bean是可以使用托管bean工具配置的JavaBeans组件
- 支持bean是一个JavaServerFaces管理的bean,它与特定页面中使用的UI组件相关联
因此,是的,您可以在一个JSF页面中使用两个或多个托管bean,但是将与一个页面相关的UI组件绑定、侦听器、逻辑等拆分为两个或多个支持bean仍然是可能的,但非常不受欢迎,可能会给您带来很多问题和错误代码。其他问题已经得到回答。然而: 此外,我在某个地方读到类似“在页面加载时,框架将实例化支持bean,如果它是回发,则填充它”。他们说支持bean,但我不理解框架如何知道实例化哪个支持bean bean通过其名称进行解析。例如,
{myFirstBean.firstProperty}
查找名为“myFirstBean”的bean(类myFirstBean
的实例)。您可以调整名称,如中所示:
@ManagedBean(name = "foo")
public class SomeClass { ... }
然后您可以通过
{foo.firstProperty}
引用它,我仍在试图理解框架如何决定在GET请求中显示页面时实例化哪些bean。我认为询问bean何时被实例化是正确的?我必须假设在第一次访问时..托管bean是由框架在显示的页面中使用时创建的。当然,我们谈论的是尚未退出的请求范围bean和会话bean。Sun的这个定义相当不透明。我更愿意说:支持bean是与视图关联的Java(模型)类,托管bean是与特定视图和范围关联的此类的实例。许多开发人员混淆了这两个术语。在这个类是为了jsf页面而创建的情况下,我使用“backingbean”这个词。对于其他bean(如数据模型bean),我使用术语managebean。