Spring3-通过JSP视图解析器包含javascript?
我正在尝试本地化我的应用程序,如果我可以通过JSP解析器发送所有JS文件以访问本地化包,那就太好了 现在,我只有这个:Spring3-通过JSP视图解析器包含javascript?,javascript,spring,jsp,spring-mvc,localization,Javascript,Spring,Jsp,Spring Mvc,Localization,我正在尝试本地化我的应用程序,如果我可以通过JSP解析器发送所有JS文件以访问本地化包,那就太好了 现在,我只有这个: <bean id="viewResolver" class= "org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.vie
<bean id="viewResolver" class=
"org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
我想知道是否有一种简单的方法可以让
.js
和.jsp
通过InternalResourceViewResolver
解析,而无需添加一些模式匹配黑客。实际上不需要将.js
文件存储为.js
,只要它们的内容类型是text/javascript
。但是在.js
文件中包含动态信息是错误的:
- 无法正确缓存它们
- 您可能想在.js文件中添加jsp逻辑,这将很难维护
- 您不能使用竞争交付网络(如果需要)
- (也许还有更多的缺点,我现在想不出来)
.jsp
中:
<script type="text/javascript">
var config = {
root : "${root}",
language: "${user.language.code}",
currentUsername: "${user.username}",
messages : {
reply : "${msg.reply}",
delete : "${msg.delete}",
loading : "${msg.loading}",
}
};
init(config);
</script>
变量配置={
根:“${root}”,
语言:“${user.language.code}”,
currentUsername:“${user.username}”,
信息:{
答复:“${msg.reply}”,
删除:“${msg.delete}”,
正在加载:“${msg.loading}”,
}
};
初始化(配置);
init(config)
位于.js
文件中,只是将config对象设置为全局变量。(我实际上有一些默认值,但这并不重要)将所有Java脚本放在webapp/scripts
下。然后以编程方式将此addResourceHandlers()
方法的实现添加到WebConfig.xml:
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "package.base.your")
public class WebConfig extends WebMvcConfigurerAdapter {
//your other WebMvcConfigurerAdapter class implementations here
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
//other handlers here
registry.addResourceHandler("/scripts/**").addResourceLocations("/scripts/**");
}
动态信息将是本地化和用户名参数化,尽管我想这确实会阻止缓存。@Stefan Kendall我也有同样的情况。看一看我稍后要添加的代码,您想做什么:为每种语言创建一个js文件(如属性文件),或者在一个js文件中添加一些语言相关占位符?