【问题标题】:Different resource files root for different environments in struts 2 & sitemeshstruts 2和sitemesh中不同环境的不同资源文件根
【发布时间】:2014-04-07 13:45:39
【问题描述】:

我对 Struts 2 和 Sitemesh 还是很陌生。我是一名前端开发人员,需要更改很多 CSS 和 JS 文件。我想要的是一种方法,在这种方法中,我不必为我在 JS 和 CSS 文件中更改的每个字符重新部署整个项目。

我认为有用的是在 apache 中创建一个 vhost,并将根转发到 struts 资源文件夹(Tomcat 正在 8080 上工作,apache 在 80 上工作)。在装饰器文件中,我定义了一个变量,当我需要部署时我会更改它。在工作模式下会是这样的:

<s:set var="resourceRoot">http://resource-folder.localhost</s:set>

对于一个 CSS 链接,我认为有这样的东西会很好:

<link rel="stylesheet" href="<s:url value='${resourceRoot}/resources/css/styles.css' />" rel="stylesheet" />

但是,当我尝试部署 tomcat 时会传递以下消息:

org.apache.jasper.JasperException: /WEB-INF/decorators/default.jsp (line: 20, column: 20) 根据 TLD 或标签中的属性指令 文件,属性值不接受任何表达式

对于我在这里的意图,最佳做法是什么?

提前致谢!

【问题讨论】:

    标签: java css jsp tomcat struts2


    【解决方案1】:

    一个简单的解决方法是将 css 文件托管在一个简单的外包网络服务器上,例如用python:

    $ cd /your/dir/to/your/sources
    $ python -m SimpleHTTPServer
    

    ... 并将您的 java 指向此服务器(例如:localhost/styles.css 等)

    编辑:对不起,我现在读到你的问题是属性标签,你已经在尝试我发布的方式......

    为什么你需要这个变量,你不能在你的java代码中设置URL吗?然后,您将能够使用运行时参数来决定是否需要从外部服务器获取源。

    【讨论】:

    • 是的,这就是我打算开发机器的目的,但它将部署在实时系统上,我不想更改所有 URL 以适应新的资源位置。我想要一个简单的方法来通过java项目中的一个变量来改变它。
    • 在您的 java 代码中,您根据启动 vm 的 agrument 构建您的 url。例如“-ddevelopment=true”。然后在您的 Java 代码中通过“Boolean isDevelopment = System.getProperty("development");”查询属性并根据此构建您的来源网址?
    • 谢谢。我会试试这个。还不知道如何在 java 中设置所有这些。
    • 另一种可能性是如果您使用的是 maven。您可以使用 Maven 过滤来填充包含资源 url 的属性文件。然后,您将使用 maven 配置文件来决定要使用的 url。我在这里找到了一个快速的解释:stackoverflow.com/questions/3195871/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-17
    • 1970-01-01
    • 2013-07-13
    • 2012-11-01
    • 2014-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多