我有一些.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的内容。

10-06 14:05