Java 如何在JSP中重用代码?

Java 如何在JSP中重用代码?,java,jsp,Java,Jsp,例如,在我的整个应用程序中,用户将作为 <div class="user"> <p class="username">${user.name}</p> <p class="karma">${user.karma}</p> <img src="/users/${user.id}"/> </div> jsp中的名称和用法: 其中job.poster是一个java bean,具有id、name和avat

例如,在我的整个应用程序中,用户将作为

<div class="user">
  <p class="username">${user.name}</p>
  <p class="karma">${user.karma}</p>
  <img src="/users/${user.id}"/>
</div>
jsp中的名称和用法:

其中job.poster是一个java bean,具有
id
name
avatarUrl
属性。 如果我加上

<%@attribute name="user" %>

为什么不使用自定义标记或jsp函数呢


谢谢,

对于您给出的示例,听起来需要一些模板框架,以便在每个屏幕上显示用户徽章。在最简单的层次上,这可能只是一个jsp:include,它总是包含您的“UserBadge.jsp”

如果您在web框架(例如JSF)上运行,您可以使用Facelet模板或为此编写自定义组件。所以答案取决于你有什么样的框架。将其分解为JSP和JSTL—包含的JSP或javax.servlet.JSP.tagext.Tag肯定会减少重复


始终注意遵循干燥原则。。。别再说了

自JSP 2.0以来,还有另一种标记:标记文件。标记文件是作为JSP模板本身编写的JSP自定义标记,这似乎就是您想要的


演示如何将此类标记文件用作常规布局解决方案。将它们用作组件应该更容易。

您应该能够在标记文件中使用标记文件;这在JSP 2.2容器中适用:


如果失败,您可以使用include指令:

请注意,规范中提到了标记:

指令是否可用?解释/限制
======================================================================
页面否标记文件不是页面。tag指令必须
我们可以用它来代替。如果本指令用于
标记文件,必须导致翻译错误。

因此,
fragment.jspf
不能包含任何标记中不支持的元素,包括
页面
指令。

我觉得有时候创建.tag文件有些过火(特别是当它仅用于一个页面时),我多年来一直想要您描述的内容,所以我编写了自己的简单解决方案。请看这里:

您的意思是:为什么不使用自定义标记或jsp函数?对吗?更新了我的问题来解释原因。而且,出于挑剔,我认为标题应该是JSTL而不是JSLT。@ripper234标记也可以包含jsp。将该标记体设置为JSP。它应该可以工作。你所说的“使标记体成为JSP”是什么意思?我想使用一个标记来实现这一点,但不确定确切的定义方式。你能告诉我一个代码示例吗?请看我编辑过的问题-我想使用标记文件,但到目前为止还不行。我找到了解决方案:@fforw链接已失效。
<%@attribute name="user" %>
Property 'id' not found on type java.lang.String