我正在使用具有上传文件的上传方法的支持bean。现在我将此文件传递给解析器,并在解析器中对csv文件中存在的行进行验证检查。
如果验证失败,我必须记录信息并保存在数据库中的日志记录表中。
是在日志记录bean中获取会话信息,以便我可以获取initialContext
并调用ejb
来将数据保存到数据库。
在我的上传支持bean中,我正在进行会话,但是当我调用解析器时,我不传递会话信息,因为我不希望解析器依赖于会话,因为我想单独测试解析器。
所以在我的解析器中,我没有session
信息,解析器正在调用logging bean(just a bean with some ejb methods)
但是在这个日志记录bean中,我需要会话,因为我需要获取initial context
。
问题
session
logging
bean
中获得upload backing bean
?我尝试过:
FacesContext ctx = FacesContext.getCurrentInstance();
HttpSession session = (HttpSession) ctx.getExternalContext().getSession(false);
但session
值为null
,更通用的问题是:
答案 0 :(得分:0)
所以我做了什么来解决这个问题,
我将参数保存为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
bean中,
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);
}