【问题标题】:jsp include page parameter using a HashMap in a request attributejsp在请求属性中使用HashMap包含页面参数
【发布时间】:2010-11-11 19:26:01
【问题描述】:

我想将 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)。

【问题讨论】:

    标签: jsp jstl el


    【解决方案1】:

    您必须至少升级到 JSP 2.0 才能让&lt;jsp:param&gt; 中的 EL 工作。 JSP 1.2 syntax reference 没有提到 &lt;jsp:param&gt; 中的任何 EL 支持,而 JSP 2.0 syntax reference 有。

    【讨论】:

    • 是的,我有点新意,我希望有一个技巧、变通方法或设计重构的想法来让它使用 jsp 1.2 工作,但比嵌入 Java 更干净
    • JSP 1.2 非常古老。它实际上也已经很长时间没有生命了。有机会升级 servlet 容器吗?
    • 我对升级有点影响。这是批准必须提升 4 个管理级别的事情之一。尽管很痛苦,但我花几天时间试图找出一个 hack 对我来说更容易。
    • 我明白了。我会原谅使用 scriptlet 并将您的时间和精力集中在更好的项目上。祝你好运。
    猜你喜欢
    • 1970-01-01
    • 2018-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-19
    相关资源
    最近更新 更多