从Servlet 2.5调用Java方法

时间:2015-03-17 08:31:43

标签: java jsp servlets el

我从我的一个JSP文件中获取了这个小代码片段:

 <c:when test="${not empty param['filePath'] && not empty param['revision']}">
<c:out value="${sessionScope.fileHelper.getContentsForPath(param.filePath,param.revision)}" escapeXml="false"/>
</c:when>

不幸的是,我必须迁移回Servlet 2.5,目前我正在使用3.0

问题是,EL (Expression Language)不支持在以前的版本中调用这样的方法。所以我问我如何用2.5兼容代码完成同样的事情。

fileHelper被添加到sessionScope其他JSP文件中,例如:

<jsp:useBean id="fileHelper"
    class="de.myPackage.util.FileHelper" scope="session" />

我尝试的是:

<%@ page import="de.myPackage.util.FileHelper"%>

<c:when test="${not empty param['filePath'] && not empty param['revision']}">
<c:out value="<%=(FileHelper)session.getAttribute("fileHelper").getContentsForPath(request.getParameter("filePath"),(String)request.getParameter("revision"))%>" escapeXml="false"/>
</c:when>

但是这写起来并不起作用:

  

对于Object类型,方法getContentsForPath(String,String)未定义。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您必须将转换会话对象包装在()中以使用它的.getContentsForPath()方法。像这样:

((FileHelper) session.getAttribute("fileHelper")).getContentsForPath(...)