jsp包含在请求属性中使用HashMap的页面参数

时间:2010-11-11 19:26:02

标签: jsp jstl el

我想将HTML页面标题传递给包含的jsp页面,但标题会在请求属性中传递给视图,该属性恰好是hashMap dbTable

这有效,但我不喜欢我将Java与我的观点混合在一起

<%@ page import="java.util.HashMap" %>
<% HashMap dbTable = ((HashMap)request.getAttribute("dbTable")); %>
<jsp:include page="inc_header.jsp" flush="true">
    <jsp:param name="pageTitle" value="<%= \"Confirm Delete \" + ((HashMap)request.getAttribute(\"dbTable\")).get(\"strTableTitle\") + \" Data \"%>" />
</jsp:include>

我只使用jsp 1.2,所以这不起作用(标题只显示EL语句)

<jsp:include page="inc_header.jsp" flush="true">
  <jsp:param name="pageTitle" value="Confirm Deletion of ${dbTable.strTableTitle} data" />
</jsp:include>

这适用于页面正文

<h1>Confirm Deletion of <c:out value="${dbTable.strTableTitle}" /> Data </h1>

但这会产生未终止的字符串错误

<jsp:include page="inc_header.jsp" flush="true">
    <jsp:param name="pageTitle" value="Confirm Deletion of <c:out value="${dbTable.strTableTitle}" /> data" />
</jsp:include>

有关如何更清洁的想法吗?标题由我的所有视图使用,我想在每个视图模板中构建最终的标题字符串(例如,Confirm Delete HashMap.DatabaseTitle data)。

1 个答案:

答案 0 :(得分:0)

您必须升级到至少JSP 2.0才能使<jsp:param>中的EL工作。 JSP 1.2 syntax reference未在<jsp:param>中提及任何EL支持,而JSP 2.0 syntax reference则支持。