如何延长bean的生命周期?

时间:2015-05-13 06:26:20

标签: spring jsf jsf-2

我需要一些JSF 2.1.29建议。我有一个豆子:

public class PlayerCardBean{

    private Integer playerId;
    //GET, SET, Other fileds and methods
}

bean的facelet playerCard.xhtml包含<a>标记,用于重定向到另一个页面:

<a href="javascript://"  
    onclick="openPage('#{request.contextPath}/panels/playerExternalTransactionList.html?playerId=#{playerCardBean.playerId}');">
        <h:outputText value="#msgs['playerCard.externalTransactionList.all']}" />
</a>

当用户在playerCard.xhtml上以及我们从playerCard.xhtml重定向到<a>标记内的链接时,我需要保持此bean保持活动状态。

视图范围较小。重定向后,bean将被销毁。

当我们在这两个视图之间重定向时,如何保持bean活着?通过<a>标记,可能还有浏览器中的“后退”按钮。

我认为在会话中存储字段不是一个好主意,因为它们不是真正的会话属性。

3 个答案:

答案 0 :(得分:2)

我可以想到以下两种解决方案:

  1. 使用会话范围。它需要使用@ConversationScoped注释来注释您的bean,您需要以编程方式管理(开始和结束)对话。 (This answer包含一些有用的示例代码。)
  2. 使用Flash

答案 1 :(得分:2)

您可以使用@ConversationScope。此范围以编程方式启动和结束。 http://www.byteslounge.com/tutorials/java-ee-cdi-conversationscoped-example

答案 2 :(得分:1)

JSF 2.1中没有完美的解决方案,但您可以创建自己的范围,这将很好地替代会话范围。

更多细节: https://blog.oio.de/2012/07/24/jsf-2-custom-scopes-without-3rd-party-libraries/