Spring 如何延长bean的生命周期?
我需要一些JSF2.1.29建议。我有一颗豆子:Spring 如何延长bean的生命周期?,spring,jsf,jsf-2,Spring,Jsf,Jsf 2,我需要一些JSF2.1.29建议。我有一颗豆子: public class PlayerCardBean{ private Integer playerId; //GET, SET, Other fileds and methods } bean的faceletplayerCard.xhtml包含 当用户在playerCard.xhtml上,以及我们通过标记内的链接从playerCard.xhtml重定向到时,我需要这个bean保持有效 视图范围较小。重定向后,bean将被
public class PlayerCardBean{
private Integer playerId;
//GET, SET, Other fileds and methods
}
bean的faceletplayerCard.xhtml
包含
当用户在playerCard.xhtml
上,以及我们通过
标记内的链接从playerCard.xhtml
重定向到时,我需要这个bean保持有效
视图范围较小。重定向后,bean将被销毁
当我们在这两个视图之间重定向时,如何保持bean的活力?通过
标记,也可能通过浏览器中的“后退”按钮
我认为在会话中存储字段不是一个好主意,因为它们不是真正的会话属性。我可以想到以下两种解决方案:
我可以想到以下两种解决方案:
您可以使用
@ConversationScope
。此作用域以编程方式启动和结束。
您可以使用
@ConversationScope
。此作用域以编程方式启动和结束。
JSF2.1中没有完美的解决方案,但您可以创建自己的作用域,这将很好地替代对话作用域 更多详情:
JSF2.1中没有完美的解决方案,但您可以创建自己的作用域,这将很好地替代对话作用域 更多详情:
我没有使用完整的javaee容器。我正在使用tomcat。你不能通过playerId重新加载属性吗?JSF2.2拥有@FlowScope你说的重新加载是什么意思?我没有考虑从PlayerCardBean(名称?、年龄?、…)迁移到JSF2.2。他们来自哪里?数据库否则,作为查询参数传输。它们来自用户,将存储到数据库中。我不在完整的javaee容器上。我正在使用tomcat。你不能通过playerId重新加载属性吗?JSF2.2拥有@FlowScope你说的重新加载是什么意思?我没有考虑从PlayerCardBean(名称?、年龄?、…)迁移到JSF2.2。他们来自哪里?数据库否则,作为查询参数传输。它们来自用户,将存储到数据库中。我在tomcat上,因此不能像使用CDI那样简单。但我用的是spring Framework。也许我可以用它做些什么?我在tomcat上,所以不能简单地使用CDI。但我用的是spring Framework。也许我能用它做点什么?别那样胡闹。不应该让整个bean保持活动状态,而应该将参数从一个bean发送到另一个bean。只需将它们作为查询参数传递,或将它们放在flash范围内即可。@XtremeBiker这很清楚,对吧。但我如何处理浏览器中的后退按钮点击呢?这个问题以前已经讨论过了:基本上,控制你想要避免缓存的内容。不要这样做。不应该让整个bean保持活动状态,而应该将参数从一个bean发送到另一个bean。只需将它们作为查询参数传递,或将它们放在flash范围内即可。@XtremeBiker这很清楚,对吧。但我如何处理浏览器中的后退按钮点击呢?这个主题以前已经讨论过了:基本上,控制你想要避免缓存的内容。
<a href="javascript://"
onclick="openPage('#{request.contextPath}/panels/playerExternalTransactionList.html?playerId=#{playerCardBean.playerId}');">
<h:outputText value="#msgs['playerCard.externalTransactionList.all']}" />
</a>