gpt4 book ai didi

java - 从一个页面导航到另一个页面( View 范围)时在支持 bean 中设置属性不起作用

转载 作者:行者123 更新时间:2023-11-29 08:11:30 24 4
gpt4 key购买 nike

我在 View 范围内有一个辅助 bean Authority,我有两个页面 viewRoleseditRole 映射到这个辅助 bean。

viewRoles 页面中有一个链接可以转到 editRole 页面:

<h:form>
<h:commandLink value="#{au.displayName}" action="pretty:editRole">
<f:setPropertyActionListener target="#{authority.authorityId}" value="#{au.id}"/>
</h:commandLink>
</h:form>

它导航到另一个页面,但该属性未设置,即使该 bean 在 View 范围内并且两个页面都映射到相同的支持 bean。它仅在我将 View 范围更改为 session 范围时才有效。

注意:我的 beans 由 Spring 管理,而且这个 View 范围不是 JSF 默认的 @ViewScoped,它是我在 http://cagataycivici.wordpress.com/2010/02/17/port-jsf-2-0s-viewscope-to-spring-3-0/ 上找到的自定义范围。 .我还使用 PrettyFaces 来管理我的导航。

问题是,上面的场景是否应该与真正的 JSF2 @ViewScoped @ManagedBean 一起工作,或者问题是否与 Spring 或其他问题有关?请指教。

最佳答案

不,这也不适用于 JSF2 @ViewScoped bean 。您基本上是在导航到一个不同 View 。 @ViewScoped 只要您通过返回 null相同 View 交互,bean 就会存在。或 void在 Action 方法中。使用 <f:param> 在命令链接中结合 <f:viewParam> 在目标 View 中应该这样做。

例如在命令链接中:

<h:form>
<h:commandLink value="#{au.displayName}" action="pretty:editRole">
<f:param name="authorityId" value="#{au.id}"/>
</h:commandLink>
</h:form>

在目标 View 中:

<f:metadata>
<f:viewParam name="authorityId" value="#{authority.authorityId}"
required="true" requiredMessage="Invalid page access. Please use a link from within the system."
/>
</f:metadata>

关于java - 从一个页面导航到另一个页面( View 范围)时在支持 bean 中设置属性不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7902185/

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