7

我是 JSP 的新手,我正在尝试减少大量剪切和粘贴的代码。
在项目的每个页面上,大约有 25 行混合的 JSP、Struts 标签、JSTL 标签和 HTML,它们在页面的各个点被剪切和粘贴。这大约 25 行重复使用的代码在每一页(大约 250 页)之间甚至都不相似,但在每一页中完全相同。最终,这个(业务逻辑)代码应该从视图中移出,但是这样做会是一个比我目前计划允许的更大的项目,所以我想知道是否有一种简单的方法来重用混合标签+JSP在页面内,作为临时修复,以便在时间允许的情况下分阶段重构代码。

为清楚起见,我正在寻找一种无需创建新文件(/本地到页面范围)即可封装代码的方法 - 即它应该在调用它的同一页面中定义。

有些人建议这可以用 Tiles 来完成 - 如果是这样,请告诉我如何。

4

3 回答 3

7

看看Apache 磁贴。由于您正在使用 Struts,我很惊讶您还没有找到它。它基本上是一个模板引擎,我认为符合您的要求。

已经建议<jsp:include>可以使用 with<jsp:param>来传递变量。喜欢

<jsp:include file="includedFile.jsp">
    <jsp:param name="username" value="jsmith" />
</jsp:include>

实际上,如果只想在公共代码中包含 1 个文件,我建议使用<jsp:include>Tiles 的简单性。

于 2010-01-06T07:39:51.590 回答
2

您可以创建一个包含文件并 jsp:include 它在任何需要的地方。可变部分可以使用 jsp 条件、jstl EL 属性或 struts EL 来完成。

我不一定要重新编码现有页面,因为它们已经在工作了。

于 2010-01-06T05:17:00.553 回答
1

Struts Tiles 最适合在 Struts 中用于模板化特定页面,这样所有页面共有的部分就不需要每次都编码。请参阅http://struts.apache.org/1.x/struts-tiles/

一个更简单的 JSP 特有的方法是上面讨论的 jsp:include。

仅供参考,还有第三种方法,即包含指令的方法

jsp:include 和 include 指令的区别如下

仅在以下情况下才应使用包含指令(<@include file relativeURL>) 1)如果文件包含静态文本 2)如果文件很少更改(如果修改了这种类型的包含文件,JSP 引擎可能不会重新编译 JSP) 3) 如果您有一个可以跨多个页面重复使用的通用代码片段(例如页眉和页脚)

仅在以下情况下才应使用 jsp:include 1) 包含的 JSP 的内容是动态的,并且可以在运行时更改 2) 选择在运行时呈现哪些内容(因为 page 和 src 属性可以采用运行时表达式)

我希望这能帮助你做出决定。

于 2010-01-06T07:50:55.180 回答