我们的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" %>