我是JSP的新手,我正在尝试减少大量的剪切和粘贴代码。
在项目的每个页面上,大约有25行混合JSP,Struts标记,JSTL标记和HTML,它们已在页面的各个点进行剪切和粘贴。这些~25行重复使用的代码甚至在页面之间甚至没有相似之处(并且有大约250页),但在每个页面中完全相同。最终这个(业务逻辑)代码应该移出View,但这样做会比我的日程安排允许的项目更大,所以我想知道是否有一种简单的方法可以重用混合标签+ JSP在页面内,作为临时修复,以便在时间允许的情况下可以分阶段重构代码。
为了清楚起见,我正在寻找一种方法来封装代码而不创建新文件(/ local to page scope) - 即它应该在调用它的同一页面中定义。
有人建议可以使用Tiles完成 - 如果是这种情况,请告诉我如何。
答案 0 :(得分:7)
看看Apache tiles。既然你正在使用Struts,我很惊讶你还没有找到它。它基本上是一个模板引擎,我认为符合您的要求。
已建议的<jsp:include>
可与<jsp:param>
一起使用,以便传递变量。像
<jsp:include file="includedFile.jsp">
<jsp:param name="username" value="jsmith" />
</jsp:include>
实际上,如果只想包含一个带有公共代码的文件,我建议使用<jsp:include>
的简单性超过Tiles的功能。
答案 1 :(得分:2)
你可以创建一个包含文件和jsp:在任何需要的地方包含它。变量部分可以用jsp条件,jstl EL属性或struts EL来完成。
我不一定想重新编码现有页面,因为它们已经在工作。
答案 2 :(得分:1)
Struts Tiles是Struts中用于模板化特定页面的最佳选择,因此每次都不需要对所有页面共有的部分进行编码。 请参阅http://struts.apache.org/1.x/struts-tiles/。
一种非常特殊于JSP的更简单的方法是jsp:include,如上所述。
仅供参考,第三种方法是包含指令
jsp:include和include指令之间的区别如下
只有在使用include指令(&lt; @ include file relativeURL&gt;)时才应该使用 1)如果文件包含静态文本 2)如果文件很少更改(如果修改了这种类型的包含文件,JSP引擎可能无法重新编译JSP) 3)如果您有一个公共代码段,您可以在多个页面(例如页眉和页脚)中重复使用
一个人应该使用jsp:include only if 1)包含的JSP的内容是动态的,可以在运行时更改 2)选择在运行时呈现哪些内容(因为页面和src属性可以采用运行时表达式)
我希望这可以帮助你做出决定。