私は以下のような豆を持っています:
@ManagedBean(name = "reportDetailsBean")
@ViewScoped
public class ReportDetailsBean implements Serializable {
// content...
}
コードのこの部分を含むJSFページ:
...
<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>
...
JSF ページは、URL からパラメーター ID を処理します。この JSF ページの正しいアドレスは、たとえばlocalhost/reportDetails.jsp?reportId=37
.
reportDetails.jsp を 2 回開く必要がある場合に問題が発生します - 異なるパラメーターを使用します。
2 つのシナリオがあります。最初のもの:
1) 開くreportDetails.jsp?reportId=1
2) 開くreportDetails.jsp?reportId=2
3) からのReportDetailsBean
インスタンスへの参照は、からのインスタンスreportDetails.jsp?reportId=1
への参照によって変更されましたReportDetailsBean
reportDetails.jsp?reportId=2
2 つ目:
1) 開くreportDetails.jsp?reportId=1
2) 上記のようなリンクを数回クリックします
3) 開くreportDetails.jsp?reportId=2
4) すべて問題ありません - 各ビューには独自のインスタンスがありますReportDetailsBean
最初のシナリオで backbean の isntance への参照が変更された理由を説明してもらえますか?