Spring 3 - 通过JSP视图解析器包含javascript?

Ste*_*all 4 javascript spring jsp localization spring-mvc

我正在尝试本地化我的应用程序,如果我可以简单地通过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>
Run Code Online (Sandbox Code Playgroud)

而且我想知道是否有一种简单的方法可以同时拥有.js.jsp通过InternalResourceViewResolver没有添加一些模式匹配hackery来解决.

Boz*_*zho 8

您实际上并不需要将.js文件存储为.js,只要它们的内容类型是text/javascript.但是在.js文件中包含动态信息是错误的:

  • 你无法正确缓存它们
  • 你可能想在.js文件中添加jsp逻辑,这很难维护
  • 你不能使用竞争传递网络(如果需要)
  • (也许还有更多的缺点,我现在想不到)

相反,您应该从使用.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>
Run Code Online (Sandbox Code Playgroud)

init(config)是在.js文件中,只是设置的配置对象作为全局变量.(我实际上有一些默认值,但这没关系)