我正在尝试本地化我的应用程序,如果我可以通过JSP解析器简单地发送所有JS文件来访问本地化包,那就太好了。
现在,我有这个:
<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
解决而不添加一些模式匹配hackery。
答案 0 :(得分:8)
您实际上不需要将.js
个文件存储为.js
,只要其内容类型为text/javascript
即可。但是在.js
文件中包含动态信息是错误的:
相反,您应该从使用.js文件的jsp页面初始化一些设置对象。有关详细信息,请参阅this answer。
以下是我的代码中的具体(简化)示例。此代码段位于.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>
init(config)
位于.js
文件中,只是将配置对象设置为全局变量。 (我实际上有一些默认值,但这没关系)
答案 1 :(得分:0)
将所有javascripts放在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/**");
}