2010-06-30 114 views
1

我有一些.jspf文件,这些文件是包含在新的.jsp文件中的片段。他们是碎片的原因是它们在多个jsps中重用,并带有一些额外的组件。在Jboss中部署jar

我现在的问题是我想在两个不同的.war文件中使用这些.jsps。

所以我创建了一个新的.jar文件,其中包含这些jspf,现在我正在尝试部署这个jar,然后我将它导入到我的新的jsp中,这是2个战争中的1个。

我无法在Jboss 4.2中成功部署jar。我正在使用Eclipse IDE。 有关于此的任何想法?如果有其他方法,我会很感激任何想法。


感谢这个建议,我按照这个想法,并部署了我WAR1其中包含我的名.jspf文件。

所以在我的上一个jsp我做WAR2:

<c:import context="/sharedComponents" url="/easyPayNamePaymentOption.jspf" var="easyPayName"/> 

<%@ include file="easyPayNamePaymentOption.jspf" %> 

但是我不能够呈现此页面所包含的片段,我不知道如何解决进口JSPF。我ahve尝试了几种不同的方法,如:

<%@ include file="/sharedComponents/easyPayNamePaymentOption.jspf" %> 

,并使用像变数名称:

<%@ include file="#{easyPayName}" %> 

但是它一直在寻找当前的战争中。我怎么能告诉它包含新导入的片段并显示它?

在此先感谢。

回答

3

我可以看到你正在尝试做什么,但是这不适用于JAR文件。所有的JSP文件(包括JSPF)都必须在WAR中,而不是在JAR中。

最简单的解决方案是将JSPF文件的副本放入每个需要使用它们的WAR中。假设你不想这样做,那么有一个替代方案,叫做cross-context WAR。

默认情况下,JBoss允许其web应用程序向对方请求资源。例如,说webapp1(上下文路径/app1)想要从webapp2(上下文路径/app2)导入JSPF /my.jspf。您可以使用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"/> 

这就是所有你需要做的 - 这将包括直接easyPayNamePaymentOption.jspf在JSP中的内容。

+0

完美,你的建议很好地工作。你是对的,我认为进口意味着“进口”。再次感谢! – msharma 2010-07-07 19:42:16

+0

HI skaffman,我只是有一个后续问题。我意识到,如果war2 has.jsp文件,那么我的c:导入工作正常。但是,如果我有只包含jsf的.jspf文件,则呈现的页面会将jspf文件的内容而不是html分发出去。任何想法,我缺少的是,它允许.jspf在HTML中呈现的某种映射? – msharma 2010-07-09 14:32:40