1
我創建了因輸入可以將它發送到多個具有不同的支持bean中的每個頁面各種各樣的微控制器。我這樣做是因爲一個頁面,它接受一個案件編號,驗證病例數,然後將其傳送到任意數量的這就需要一個有效的情況下,頁數。JSF傳遞一個bean到頁面
這是我caseSelector頁:
<h:form id="form1">
<h:inputText value="#{caseSelectorBean.caseNumber}"/>
<h:inputHidden value="#{caseSelectorBean.nextPage}"/>
<h:commandButton action="#{caseSelectorBean.gotoNext}" value="submit"/>
</h:form>
我的豆正確驗證casenumber並填寫下一頁面豆,並將其轉發到該頁面。
//CaseSelectorBean
public String gotoNext() {
logger.debug("In the caseChooser, going to xpage");
logger.debug("caseNum=" + caseNumber);
if(!validateCaseNumber(caseNumber)) {
return "caseNotFound";
}
if(nextPage.equals("page1")) {
CaseDAO caseDAO = new CaseDAO();
caseInfo = caseDAO.getCaseInfo(caseNumber);
CaseInfoBean caseInfoBean = new CaseInfoBean();
caseInfoBean.setCaseInfo(caseInfo);
caseInfoBean.setCaseNumber(caseNumber);
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put(
"caseInfoBean", caseInfoBean);
}
logger.debug("done with gotoNext(), returning " + nextPage);
return nextPage;
}
問題是當我嘗試從下一頁訪問bean時,它是空的。我可以通過構造函數看到它創建了一個新的而不是在會話中使用的。我如何讓頁面使用我爲它創建的bean?
謝謝!
什麼是你的bean的範圍。它應該是SessionScoped。 – 2012-03-29 17:59:14
我確實有這個要求。當我將其更改爲會話,我 javax.servlet.ServletException:無法創建託管bean caseSelectorBean。發現以下問題: - 表達式#{param.caseNumber}引用的對象的請求範圍比會話 的引用託管bean(caseSelectorBean)範圍短,因爲我有一個託管屬性, \t <託管財產> <屬性名稱> caseNumber屬性名稱>#{} param.caseNumber 託管財產> –
2012-03-29 18:39:59
有沒有更好的方式來傳遞從JSP頁面的caseNumber參數? – 2012-03-29 18:43:41