gpt4 book ai didi

java - 在 JSF 中从请求 ManagedBeans 传递数据

转载 作者:行者123 更新时间:2023-12-01 16:08:58 27 4
gpt4 key购买 nike

我对“请求”类型的 ManagedBeans 的生命周期有些困惑。

在此示例中,我使用一个请求 bean“userBean”来填充此页面,并使用一个请求 bean“userEditBean”来填充以下编辑页面。

<h:form>
<h:panelGrid border="1" columns="2">

<h:outputText value="Name" />
<h:outputText value="#{userBean.user.name}" />
...
</h:panelGrid>

<h:commandButton value="Edit" action="edit" actionListener="#{userEditBean.init}">
<f:attribute name="user" value="#{userBean.user}"/>
</h:commandButton>
</h:form>

当我按下“编辑”按钮时,会创建一个 userEditBean,但属性映射将“user”解析为 null。

这是否意味着属性 EL 在 userBean 已被销毁后解析?如何将值从传入 bean 传递到传出 bean?

最佳答案

您正在使用表达式设置属性值,而不是静态值。每当您请求该值时,表达式都会被重新计算。 userBean.user显然不存在于后续请求中。您需要确保它存在(换句话说, userBean 的构造函数应确保 user 已创建并设置。

但是还有其他选择。最好的方法之一是使用 Tomahawk <t:saveState> 为了那个原因。将其添加到页面中的某个位置:

<t:saveState value="#{userBean.user}" />

话虽如此,我同意 Bozho 的观点,整个方法有点奇怪,但那是另一个故事了。不过,您可能会从以下任一文章中获得许多有用的想法:Communication in JSF和/或 Using Datatables 。祝你好运。

关于java - 在 JSF 中从请求 ManagedBeans 传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1933732/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com