在spring webflow中定义的javascript变量'Spring'在哪里?

时间:2011-03-01 08:45:43

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

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

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

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

3 个答案:

答案 0 :(得分: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

如果将Spring MVC配置为指定的here

,则可以提供服务
<mvc:annotation-driven/>
<mvc:resources mapping  = "/resources/**"
               location = "/, classpath:/META-INF/web-resources/" />
  

请注意完整的资源网址   取决于你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

答案 1 :(得分:1)

我在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>

如果重新格式化以将注释放在行上方,则spring.js永远不会包含在运行时中,因此您会看到'Spring.addDecoration未定义'的原因。

此时,我不确定为什么tagx如此挑剔。

答案 2 :(得分:0)

此问题已解决。首先,必须像Sean所说的那样添加配置。然后导入以下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中使用磁贴,使用磁贴的webflow示例并在standard.jsp中导入三个js文件,这就是为什么我应该在每个jsp文件中显式导入js文件。