2008-10-13 45 views
1

我正在Ruby和Java世界中工作。 merb-assets项目为我提供了一些启发,它提供了各种功能,以便轻松地引用位于子域(或CDN)上的资源(图像,CSS等)。如何在生产中引用来自不同子域(或CDN)的资产?

我想要做同样在Java中:

  • 开发和测试,我要为使用JSTL的<c:url>或在Struts 2的<s:url value=""/>标签引用的资产。
  • 但在生产,我想将这些资产的大部分移出到一个单独的子域(或CDN)。

是否有任何taglibs(或其他方法)可以帮助解决这个问题?我并不特别想用<c:iflocalhost测试我的观点,每次插入<img><link>标记。

我正在使用Struts 2 + JSP。

回答

1

我并不真正了解Struts 2,但我正在考虑使用Maven2功能的解决方案...... 因此,如果您确实使用Maven2来构建应用程序,则可能会解决您的问题资源过滤器和配置文件功能的问题。

资源过滤: 您可以要求Maven2过滤ressources文件(在我们的例子中是JSP文件)。过滤器意味着用它们的值替换所有$ {xxx}。 这将有助于用您需要的值(“localhost”,“http:// ...”)替换参数(例如$ {domain.url})。

然后,您定义2个配置文件:“开发测试”和“生产”。 每个配置文件都将为这些资产定义自己的域。例如,在开发测试中,您可以将域定义为“localhost”,在生产中,该域将为“http:// ....”。

我不知道这是否可以解决你的问题,但你可以试试看:O)

参考文献: 筛选资源:http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html 概况:http://maven.apache.org/guides/introduction/introduction-to-profiles.html

+0

我完全投入使用Maven 2,所以这个解决方案看起来很有趣(尽管与我设想的解决方案完全不同!)。 2个问题:1.是否与JSTL变量过滤冲突? 2.如果我希望我的JSP保留在我的WEB-INF /文件夹中,该怎么配置? – myabc 2008-10-13 15:13:03