Spring MVC Webapp:在哪里存储常见图像的路径?
我正在使用 Tiles/JSP 作为视图技术构建 Spring MVC Web 应用程序。 以前我将公共图像的路径存储在类 Common: 中,
public final static String IMG_BREADCRUMBS_NEXT = "/shared/images/famfam/bullet_arrow_right.png";
然后我会在 jsp 中使用此类来获取图像 src,就像
<img src="<%= Common.IMG_BREADCRUMBS_NEXT %>"/>
我想在 jsp 代码中删除 scriptlet 并使用 jstl 等代替一样。 存储此类信息的最佳方式是什么? 是资源包吗? 你是怎么解决这个问题的?
I'm building a Spring MVC web application with Tiles/JSP as the view technology.
Previously I stored the paths to common images in class Common:
public final static String IMG_BREADCRUMBS_NEXT = "/shared/images/famfam/bullet_arrow_right.png";
Then I would use this class in jsp to get the image src like
<img src="<%= Common.IMG_BREADCRUMBS_NEXT %>"/>
I would like to get rid of scriptlets in my jsp code and use jstl etc. instead.
What is the best way to store this kind of information? Is it resource bundles?
How have you solved this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
最终我使用Spring的主题支持来实现我想要的。
在我的视图代码中,我使用
标签来获取图像文件的路径:此标签的行为与任何< /code> 或
标签,但它有自己的“消息包”。 我的 applicationContext 中的必要配置是:我的应用程序的所有主题都存储在
/WEB-INF/classes/themes/
下。 默认主题属性位于/WEB-INF/classes/themes/default.properties
它看起来像这样:
要更改应用程序的主题(和图标),我使用 ThemeChangeInterceptor (在 applicationContext 中)
这使用户能够通过
"&theme=themes.default"
切换主题或“&theme=themes.alternative”
请求参数。我的设置的一个关键部分是主题属性文件中的
@contextPath@
。 在 Ant 构建过程中,它会被替换为开发/测试/生产环境的正确上下文路径。 我的 build.xml 的关键部分是:我希望这能为您提供 Spring Web 应用程序主题的“良好开端”。 在我看来,这种设置使得改变应用程序的外观和感觉变得非常容易。
参考资料:
In the end I used Spring's theme support to achieve what I wanted.
In my view code I use the
<spring:theme code=""/>
tag to get the path to image file:This tag behaves like any
<fmt:message>
or<spring:message>
tag, but it has its own "message bundles". The necessary configurations in my applicationContext are:All themes of my application are stored under
/WEB-INF/classes/themes/
. The default theme properties are in/WEB-INF/classes/themes/default.properties
It looks like this:
To change the theme (and icons) of my app I use a ThemeChangeInterceptor (in applicationContext)
This enables the user to switch the theme via a
"&theme=themes.default"
or"&theme=themes.alternative"
request parameter.One key part of my setup is the
@contextPath@
in the theme properties file. This is replaced during the Ant build process with the correct context path for development/testing/production environment. The key part of my build.xml is:I hope this gives you a "running start" on Spring web app themes. In my opinion this setup makes it quite easy to alter the look and feel of an application.
References:
在应用程序范围内使用配置 bean,因此您可以编写类似
我不使用 Spring 的内容,但您可能可以使用依赖项注入来执行类似于我们在 JBoss 和 Seam 中所做的操作。
基本上,我们有一个名为 Configuration 的 POJO 类,其属性是应用程序的配置参数,从 XML 配置(实际上是 JBoss MBean,但这不是主题)加载。 在此示例中,我们的 bean 将有一个
getImagePath()
方法。Seam 将负责在“应用程序”范围内实例化配置 bean 的单个实例,以便它始终可以在表达式中使用,就像上面的例子一样。
Use a configuration bean in application scope, so you can write something like
I don't use Spring, but you can probably use dependency injection to do something similar to what we do in JBoss and Seam.
Basically, we have a POJO class called Configuration whose properties are the application's configuration parameters, loaded from an XML configuration (actually a JBoss MBean, but that's off-topic). In this example, our bean would have a
getImagePath()
method.Seam will take care of instantiating a single instance of the configuration bean in 'application' scope, so that it is always available to use in expressions, like the one above.
使用基于数据库确定主题的类不是更健壮吗? 这将允许用户管理主题,甚至根据时间或用户代理实施主题?
是否可以做到这一点并同时使用 spring 主题,将主题保存在用户会话中?
Wouldn't it be more robust to use a class that determined the theme based on a database. This would allow users to administer themes and even implement themes based on time or the user-agent?
Would it be possible to do this and use spring themes at the same time, to save the theme in the users session?