【发布时间】:2014-10-22 20:22:42
【问题描述】:
我使用 CDI 注释定义了一个如下所示的 RequestScoped bean。我有几个使用相同 bean 的页面。当我从一个页面导航到另一个页面时。 bean obj 保持不变。即使我更改会话(使用不同的用户登录)。 bean 对象没有改变。
根据 RequestScoped 的定义,bean 实例应该为每个新请求重新创建。我错过了什么?
我正在使用 JSF/Primefaces。导航到 detail.xhtml 页面后,可以看到从 create.xhtml 页面输入的值。在 backing bean 中,不会重新分配值。
谢谢,
张
================================================ ==============
import javax.enterprise.context.RequestScoped;
import javax.inject.Named;
@Named("targetManager")
@RequestScoped
public class TargetManager implements Serializable {
}
======================================
create.xhtml:
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core"
template="../../templates/rapm.xhtml">
<ui:define name="contents">
<h:form id="createform">
<h:outputLabel id="englishNameLabel">
<h:outputText id="englishName" value="#{msg['view.label.englishname']}:" />
<h:outputText id="englishNameStar" value="* " styleClass="mandatory" />
</h:outputLabel>
<p:inputText id="englishTitle" value="#{targetManager.selectedTarget.englishName}" >
<f:validator id="englishNameValidate1" validatorId="duplicateValidator" />
</p:inputText>`
======================================
detail.xhtml:
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core"
template="../../templates/rapm.xhtml">
<ui:define name="contents">
<p:scrollPanel id="scrollPanel" styleClass="contentPanel ntb" mode="native">
<h:outputText id="englishName" value="#{msg['.view.label.englishname']}:"/>
<h:outputText id="englishNameValue" value="#{targetManager.selectedTarget.englishName}" />
`
【问题讨论】:
-
怎么知道对象没有变化?
-
我调试代码。对象 ID 始终相同。 bean的值可以从多个页面访问
-
能否请您发布您调试代码的部分。
-
不知道如何发布调试代码。我只是在我的审计程序中设置了一个检查点,它捕获了 bean 'targetManager' 的一些值。此时,当来自不同页面和请求的线程时,bean 的 id 始终是相同的数字。重启应用后号码id才会改变——张旭南5小时前
标签: jakarta-ee cdi