我有一些.jspf文件,这些文件是我包含在新的.jsp文件中的片段。它们之所以是片段,是因为它们通过一些附加组件在多个jsp中得以重用。
现在的问题是,我想在2个不同的.war文件中使用这些.jsps文件。
因此,我创建了一个包含这些jspf的新.jar文件,现在我正尝试部署此jar,以便将其导入到两次大战之一中的新jsp中。
我无法在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}" %>
但是,它一直在寻找当前的战争内部。如何告诉它包括新导入的片段并显示它?
提前致谢。
最佳答案
我可以看到您正在尝试执行的操作,但这不适用于JAR文件。所有JSP文件(包括JSPF)都必须包含在WAR中,而不是JAR中。
最简单的解决方案是将JSPF文件的副本放入需要使用它们的每个WAR中。假设您不想执行此操作,那么有另一种方法称为cross-context WAR。
默认情况下,JBoss允许其Web应用程序相互请求资源。例如,假设webapp1(上下文路径/app1
)要从webapp2(上下文路径/my.jspf
)导入JSPF /app2
。您可以从webapp1内部使用JSTL来执行此操作:
<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
的内容。