Witam,
mam beana, które schemat wygląda jak poniżej:
@ManagedBean(name = "reportDetailsBean")
@ViewScoped
public class ReportDetailsBean implements Serializable {
// content...
}
oraz strone JSF, której fragment kodu to:
...
<a4j:queue id="reportQueue" status="globalStatus" />
<a4j:form id="reportForm#{reportDetailsBean.report.id}" ajaxSingle="true" ajaxSubmit="true" eventsQueue="reportQueue" reRender="reportForm" styleClass="">
...
<a4j:outputPanel id="salesItemNameHeader" layout="block" style="cursor: pointer;" rendered="#{reportDetailsBean.model.rowCount gt 0}">
<h:outputText value="#{bundle.reportDetails_salesItem}" />
<rich:spacer width="4px" />
<a4j:support event="onclick" reRender="reportTable" action="#{reportDetailsBean.model['sortTableByColumn']}" status="globalStatus" ajaxSingle="true">
<a4j:actionparam name="columnIndex" value="bySalesItemName" assignTo="#{reportDetailsBean.model['currentSortModelItem']}" />
</a4j:support>
</a4j:outputPanel>
...
strona JSF przechwytuje parametr reportId z URL. Przykładowy poprawny adres wywołania to: localhost/project/reportDetails.jsp?reportId=37.
Problem pojawia się, gdy chcę otworzyć tą storne w dwóch oknach z różnymi parametrami.
Obserwuję u mnie dwa przypadki. Pierwszy:
- Otwieram reportDetails.jsp?reportId=1
- Otwieram reportDetails.jsp?reportId=2
- Referencja do instancji ReportDetailsBean dla reportDetails.jsp?reportId=1 zostaje podmieniona na referencje do instancji ReportDetailsBean dla reportDetails.jsp?reportId=2. W związku z tym tracę możliwość wykonywania kolejnych działań na stronie reportDetails.jsp?reportId=1.
Drugi:
- Otwieram reportDetails.jsp?reportId=1
- Wykonuję kilka operacji na otwartej stornie klikając na linki takie jak zamieszczone powyżej
- Otwieram reportDetails.jsp?reportId=2
- Wszystko jest ok. Każdy widok ma swoją instancje ReportDetailsBean i na obu mogę wykonywać dalsze operacje.
Według mnie działanie w drugim przypadku jest prawidłowe dla @ViewScoped - każdy widok ma swojego beana.
Czy ktoś mógłby mi wytłumaczyć dlaczego w pierwszym przypadku referencja do backbeana dla pierwszej strony jest zmieniana?
pozdrawiam,
Antek