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