【问题标题】:Where is javascript variable 'Spring' defined in spring webflow?spring webflow中定义的javascript变量'Spring'在哪里?
【发布时间】:2011-07-06 08:20:54
【问题描述】:

我正在使用spring webflow,我的页面出现以下错误:

Spring is not defined
Spring.addDecoration(new Spring....entId:'proceed', event:'onclick'})); 

我想知道在 spring 框架中定义的 javascript 变量 Spring 在哪里。我用的是maven,应该加什么依赖呢?

【问题讨论】:

    标签: spring maven-2 maven-3 spring-webflow


    【解决方案1】:

    基础 Maven 依赖:

    <dependency>
        <groupId>org.springframework.webflow</groupId>
        <artifactId>spring-webflow</artifactId>
        <version>2.2.1.RELEASE</version>
    </dependency>
    

    这将包括这个传递依赖:

    <dependency>
        <groupId>org.springframework.webflow</groupId>
        <artifactId>spring-js</artifactId>
        <version>2.2.1.RELEASE</version>
    </dependency>
    

    其中包含 JavaScript 资源:

    资源:

    META-INF/web-resources/spring/Spring.js

    如果按照指定的here 配置 Spring MVC,您可以提供哪些服务:

    <mvc:annotation-driven/>
    <mvc:resources mapping  = "/resources/**"
                   location = "/, classpath:/META-INF/web-resources/" />
    

    注意完整的资源 URL 取决于你的DispatcherServlet 被映射。在 mvc-booking 示例中 我们选择用 默认servlet映射'/':

    <servlet>
        <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    

    这意味着要加载的完整网址 Spring.js/myapp/resources/spring/Spring.js。如果 你的 DispatcherServlet 是 映射到 /main/* 然后是完整的 URL 将是 /myapp/main/resources/spring/Spring.js.

    【讨论】:

    • 谢谢你的回复,但是那个js文件怎么导入呢?我记得我之前没有明确导入它。我没有错误。但是我改变了一些东西,然后它就不起作用了。
    • 我使用的是spring3.0.4,我添加了以下两行:,但不工作。
    • @Tom 我已经更改了答案,文档和 maven 工件版本不适合。
    • 感谢您的耐心等待,我将所有配置添加为您的答案,并像这样显式导入 spring.js:" type="text/javascript"> ,现在错误是:Spring.ValidateAllDecoration is not a constructor Spring.addDecoration(new Spring..entId:'proceed', event: '点击'}));而且我发现webflow的例子:swf-booking-mvc没有明确导入任何js。
    【解决方案2】:

    此问题已解决。首先必须按照肖恩说的添加配置。然后导入下面的js。

    <script type="text/javascript" src="<c:url value="/resources/dojo/dojo.js" />"></script>
    <script type="text/javascript" src="<c:url value="/resources/spring/Spring.js" />"></script>
    <script type="text/javascript" src="<c:url value="/resources/spring/Spring-Dojo.js" />"></script>
    

    我没有在我的webflow中使用tiles,webflow使用tiles的例子并在standard.jsp中导入这三个js文件,这就是为什么我应该在每个jsp文件中显式导入js文件。

    【讨论】:

      【解决方案3】:

      我在 Spring Roo 中遇到了这个问题,结果发现这个问题与 load-scripts.tagx 文件中对 dojo 和 spring 脚本的引用有关。语法应该如下:

        <script src="${dojo_url}" type="text/javascript"><!-- required for FF3 and Opera --></script>
        <script src="${spring_url}" type="text/javascript"><!-- /required for FF3 and Opera --></script>
        <script src="${spring_dojo_url}" type="text/javascript"><!-- required for FF3 and Opera --></script>
      

      如果您重新格式化以将 cmets 放在行上方,那么 spring.js 永远不会在运行时包含,这就是您看到“Spring.addDecoration is undefined”的原因。

      在这一点上,我不确定为什么 tagx 对此如此挑剔。

      【讨论】:

        猜你喜欢
        • 2011-10-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-19
        • 1970-01-01
        • 1970-01-01
        • 2015-02-16
        相关资源
        最近更新 更多