web.xml配置如下
<servlet>
<servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring/appServlet/servlet-context.xml
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet> <servlet-mapping>
<servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>模版是velocity 类似这样的
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
现在的问题是
我在一个方法上配置如下
@RequestMapping(value="/trend/test", method=RequestMethod.GET)
public String test(Model model) {
// model.addAttribute("foo", "bar");
// model.addAttribute("fruit", "apple");
return "index";
}
转向到/WEB-INF/views/index.vm上去了
这个页面时找到了,但是其他的图片,css等都通过/trend 去转向 。所以这个页面上的图片,还有嵌入的其他的vm都无法找到
比如index.vm这个页面引用了<iframe width="100%" ....  src="velocity/layout/header.vm"/>就会从/trend/velocity/layout/header.vm去找 。
请问这样的问题怎么解决??

解决方案 »

  1.   

    没错啊 你是后台forward的
    路径当然是你的提交路径你应该配一个路径用于存放静态内容
    然后用mvc:resource定位
      

  2.   

    现在的问题是 当前页面所有的内容都通过/trend/去转发了 
    我的意思是当这个请求来的时候能找到对应的页面 。页面里面的图片等静态资源不通过/trend/转发
    因为加上了trend 所有的静态资源会在prefix中也加上 /trend/WEB-INF/views 如果没有trend是可以访问到资源的
    这个怎么解决呢 
      

  3.   

    /trend/test这个是你的访问路径
    forward出来的路径也是这个用相对路径的访问得到的css,js当然也是这个路径的
    比如引入a.css,b.js
    那css和js的路径是
    /trend/a.css  /trend/b.js
    但是由于你直接把/作为servlet拦截路径,所以这2个访问实际也被spring截取了,并且找不到相应的转发请求解决办法是在spring中配置一个静态映射
    <mvc:resources location="/static/" mapping="/static/**"/>
    指定/static/下的文件不作为spring-mvc的请求处理在jsp中载入css和js的代码修改为相对或绝对路径
    ../static/a.css  ../static/b.js
    或者
    项目/static/a.css 项目/static/b.js
    类似这样
      

  4.   

    谢了哥们 基本的问题我已经搞定了
    还有个小问题
    就是页面使用的elocity 布局使用的是iframe 所以对主页面的页眉页脚左边栏(left.vm,head.vm,footer.vm)
    等之类的资源如果映射成静态资源,页面显示的是源码。如果不通过静态映射,后台写成controller(比如访问/header 返回/layout/header.vm) 但是左边栏里面显示的是整个网页(貌似每个同求通过controller处理返回的页面都会经过iframe页面框架处理),上面top显示的也是整个网页,所以返回给我的index页面页眉页脚都是整个网页内容 。问题应该描述清楚了吧,如果你看到了请帮我想想这个问题如何解决(在内网开发,无法截图 呵呵)
      

  5.   

    项目里用了 velocitylayoutviewresolver 模板来解析 原来这个原因
    第一次使用velocity还真是问题不少啊 。页面布局听头大的 呵呵 谢了哥们