Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSF在一个页面上有多个备份bean_Java_Jsf_Facelets - Fatal编程技术网

Java JSF在一个页面上有多个备份bean

Java JSF在一个页面上有多个备份bean,java,jsf,facelets,Java,Jsf,Facelets,我读了一些书,玩了一些游戏,我仍然有一些问题,我希望有人能回答: 那么,我可以在一个JSF页面中使用两个或更多的支持bean吗 <h:intputText value="#{myFirstBean.firstProperty}" /> <h:intputText value="#{mySecondBean.secondProperty}" /> 如果可以,我为什么不做呢?(我想我不应该这样做,因为没有人这样做) 如果我不能,为什么 此外,我在某个地方读到类似“在页面

我读了一些书,玩了一些游戏,我仍然有一些问题,我希望有人能回答:

那么,我可以在一个JSF页面中使用两个或更多的支持bean吗

<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。