我有一些.jspf文件是我在新的.jsp文件中包含的片段。它们是片段的原因是它们可以在多个jsps中使用一些额外的组件重复使用。
我现在的问题是我想在两个不同的.war文件中使用这些.jsps。
所以我创建了一个新的.jar文件,其中包含了这些jspf,现在我正在尝试部署这个jar,然后我将它导入我的新jsp中,这是在2场战争中的1场内。
我无法在Jboss 4.2中成功部署jar。我正在使用Eclipse ide。 有什么想法吗?如果有替代方法,我会很感激任何想法。
感谢您的建议,我已经按照这个想法部署了包含我的.jspf文件的war1。
所以在我关于jsp的war2中我做了:
<c:import context="/sharedComponents" url="/easyPayNamePaymentOption.jspf" var="easyPayName"/>
<%@ include file="easyPayNamePaymentOption.jspf" %>
但是我无法使用包含的片段呈现此页面,我不知道如何处理导入的jspf。我尝试了几种不同的方式:
<%@ include file="/sharedComponents/easyPayNamePaymentOption.jspf" %>
并使用var名称:
<%@ include file="#{easyPayName}" %>
然而,它一直在寻找目前的战争。如何告诉它包含新导入的片段并显示它?
提前致谢。
答案 0 :(得分:3)
我可以看到你正在尝试做什么,但这不适用于JAR文件。所有JSP文件(包括JSPF)都必须在WAR内部,而不是JAR。
最简单的解决方案是将JSPF文件的副本放入需要使用它们的每个WAR中。假设您不想这样做,那么有一种替代方法,称为cross-context WAR。
默认情况下,JBoss允许其webapps相互请求资源。例如,假设webapp1(上下文路径/app1
)想要从webapp2(上下文路径/my.jspf
)导入JSPF /app2
。您可以使用JSTL从webapp1内部执行此操作:
<c:import context="/app2" url="/my.jspf"/>
因此,如果您要创建一个包含JSPF文件的“共享”WAR文件,并将其部署到JBoss,那么您的其他Web应用程序可以使用上述技术将JSPF的内容包含到自己的JSP中。
编辑:我已阅读您更新的问题,但我不明白为什么您将var="easyPayName"
添加到<c:import>
代码中。所有这一切都是导入easyPayNamePaymentOption.jspf
的内容并将其存储在名为easyPayName
的变量中,这似乎完全没必要。
我想也许您正在将<c:import>
与java import
相关联?如果是这样,不要 - 他们完全不同。 <c:import>
应该被称为<c:include>
,因为它就是它的作用。
保持简单,删除属性,然后
<c:import context="/sharedComponents" url="/easyPayNamePaymentOption.jspf"/>
这就是你需要做的全部 - 它将直接在JSP中包含easyPayNamePaymentOption.jspf
的内容。