我Authority在视图范围内有一个支持bean ,我有两个页面viewRoles并editRole映射到这个支持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>
Run Code Online (Sandbox Code Playgroud)
它导航到另一个页面,但该属性未设置,即使bean位于视图范围内并且两个页面都映射到同一个辅助bean.它仅在我将视图范围更改为会话范围时才有效.
注意:我的bean是由Spring管理的,这个视图范围也不是JSF的默认值@ViewScoped,它是我在http://cagataycivici.wordpress.com/2010/02/17/port-jsf-2-0s上找到的自定义范围.-viewscope-to-spring-3-0 /.我也使用PrettyFaces来管理我的导航.
问题是,上述场景是否应该与真正的JSF2一起使用,@ViewScoped @ManagedBean还是与Spring相关的问题或其他问题?请指教.
不,这也不适用于JSF2 @ViewScopedbean.您基本上导航到不同的视图.一个@ViewScoped作为你与交互豆住,只要同一视图通过返回null或void在操作方法.<f:param>在<f:viewParam>目标视图中结合使用命令链接应该这样做.
例如在命令链接中:
<h:form>
<h:commandLink value="#{au.displayName}" action="pretty:editRole">
<f:param name="authorityId" value="#{au.id}"/>
</h:commandLink>
</h:form>
Run Code Online (Sandbox Code Playgroud)
并在目标视图中:
<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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1423 次 |
| 最近记录: |