[英]Passing session between jsf backing bean and model
我有支持bean,它具有在文件上傳時監聽的上載方法。 現在,我將此文件傳遞給解析器,並在解析器中對csv文件中存在的行進行驗證檢查。
如果驗證失敗,我必須記錄信息並保存在數據庫的記錄表中。
是在日志bean中獲取會話信息,以便可以獲取initialContext
並調用ejb
將數據保存到數據庫。
在我的上載支持bean中,正在獲取會話,但是當我調用解析器時,我不傳遞會話信息,因為我不想解析器依賴於會話,因為我想分別對解析器進行單元測試。
所以在我的解析器中,我沒有session
信息,從解析器開始調用logging bean(just a bean with some ejb methods)
但是在此日志記錄bean中,我需要會話,因為我需要獲取initial context
。
題
logging bean
中的session
與upload backing bean
的session
? 我試着做:
FacesContext ctx = FacesContext.getCurrentInstance();
HttpSession session = (HttpSession) ctx.getExternalContext().getSession(false);
但session
值是null
,更籠統的問題是:
所以我為解決這個問題做了什么
我將參數保存為xhtml
查詢字符串,例如status.xhtml
<h:link outcome="Log" value="${result.id}">
<f:param name="jobid" value="${result.id}"/>
<f:param name="userid" value="${result.userId}"/>
</h:link>
現在在我的log.xhtml
,我有
<f:metadata>
<f:viewParam name="jobid" value="#{bean.jobId}"/>
<f:viewParam name="userid" value="#{bean.userId}"/>
</f:metadata>
在我的log
豆中,
public void init()
{
String userId1 = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("userid");
String jobId1 = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("jobid");
userId = Long.parseLong(userId1);
jobId = Long.parseLong(jobId1);
}
參考: 處理獲取參數
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.