我们的Java / JSP应用程序具有“此处是您同意的条款和条件”页面。我刚刚收到了保存此协议文本(基本上是整个JSP页面)以及用户记录的要求。当前,它作为静态文本嵌入在JSP页面中,如下所示:

        <div>
        <h2>General Terms & Conditions</h2>
        <div >
            <p>You agree to sell your soul and work for free.  Also, you agree to wash all our cars by hand twice a week.</p>
        </div>
    </div>


起初,我认为最好将此文本拉入属性文件,以便可以从应用程序的多个位置访问它:

    <div>
        <h2>General Terms & Conditions</h2>
        <div >
            <p><fmt:message key='termsAndConditions.youAreDoomed'/></p>
        </div>
    </div>


但是即使那样也不能满足我的需要,基本上就是将整个文本作为字符串。

我想到的另一种选择是从外部文件将整个HTML或文本协议读入JSP页面-这也使我可以访问Java代码中的预格式化文本。但这似乎很痛苦。

有一个更好的方法吗?是否有某种方法可以将整个呈现的页面的HTML或文本捕获为String,以便可以将其保存在记录中?我正在尝试进行尽可能少的重构,因为此应用需要“尽快”上线。

最佳答案

要将整个HTML或文本协议读入JSP页面并将其存储在变量中:

<c:import url="/termsAndConditions.html" var="agreement" />


要输出它:

<c:out value="${agreement}" />


要直接输出而不存储它:

<c:import url="/termsAndConditions.html" />


要从脚本中访问变量:

<c:import url="/termsAndConditions.html" var="agreement" />
<%
    String termsAndConditions = (String) pageContext.getAttribute("agreement");
%>


声明变量的范围(默认为page范围):

<c:import url="/termsAndConditions.html" var="agreement" scope="application" />


要使用核心JSTL库,请在JSP页面的开头添加:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

10-04 22:43
查看更多