Я определил компонент RequestScoped, как показано ниже, с аннотацией CDI. У меня есть несколько страниц, которые используют один и тот же компонент. Когда я перемещаюсь со страницы на страницу. Боб obj сохраняет то же самое. Даже когда я меняю сеанс (login wth different user). Объект bean не изменяется.Жизненный цикл CDI @RequestScoped bean
В соответствии с определением RequestScoped экземпляр bean-компонента должен воссоздавать для каждого нового запроса. Что-нибудь я пропустил?
Я использую JSF/Primefaces. Значение, введенное с страницы create.xhtml, можно увидеть после перехода на страницу detail.xhtml. В резервном компоненте значение не переопределяется.
Спасибо,
Чжан
=================================== =========================
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}" />
`
Как вы узнали, что объект не изменен? –
Я отлаживаю код. Идентификатор объекта всегда один и тот же. Доступ к значениям компонента можно получить из нескольких страниц. –
Можете ли вы отправить часть, в которой вы отлаживаете код. –