2016-08-24 67 views
1

我有以下控制器返回与URL路径的静态页参数

@Controller 
@RequestMapping("/room/{roomId:^(?!main.html$).*}") 
public class Rooms { 

    @RequestMapping 
    public String index(@PathVariable(value = "roomId") String id) { 
     // do some stuff... 
     return "main.html"; 
    } 
} 

我有一个main.html中的文件在我的资源/文件夹的静态。我想当用户转到/ room/{something}做一些处理时,返回我拥有的静态main.html页面。

一切我尝试在网页结果未发现异常或

javax.servlet.ServletException: Circular view path [main.html]: 
would dispatch back to the current handler URL 
[/room/main.html] again 

我缺少什么,让这个工作?

感谢您的帮助

+0

项目中的ded InternalViewResolver? – Vaibs

+0

不,我今年春天是全新的东西。我认为春天应该能够处理HTML文件,而无需任何配置?我如何去添加一个内部视图解析器? – AAG

+0

此外,如果我没有URL路径参数,然后返回main.html,它工作正常。我介绍URL路径参数时只有一个问题。 – AAG

回答

0

如果你正在做的配置类视图解析器

@Bean 
    public UrlBasedViewResolver urlBasedViewResolver() 
    { 
     UrlBasedViewResolver res = new InternalResourceViewResolver(); 
     res.setViewClass(JstlView.class); 
     res.setPrefix("/WEB-INF/"); 
     res.setSuffix(".jsp"); 
     return res; 
    } 

如果使用XML

<beans:bean  class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <beans:property name="prefix" value="/WEB-INF/jsp/" /> 
     <beans:property name="suffix" value=".jsp" /> 
    </beans:bean> 

此外,通过下面的代码更改控制器

@RestController 
@RequestMapping("/room/") 
public class Rooms { 

    @RequestMapping(method = RequestMethod.GET) 
    public ModelAndView index(@PathVariable(value = "roomId") String id) { 
     // do some stuff... 

     ModelAndView model = new ModelAndView(); 
     model.setViewName("main"); 
     return model; 
    } 
} 
您的广告
+1

感谢您的建议。只要我可以,我会试试这个。几个问题。为什么我们将后缀设置为.jsp?我的文件是main.html。如果我的html文件是资源/静态的,为什么前缀是WEB-INF/jsp?我应该移动我的文件吗?最后,我可以将代码更改为您提供的内容。但是,你能解释为什么返回一个模型和视图,而不是我拥有的字符串?谢谢 – AAG

+0

你也可以设置.html也。我使用.jsp这就是为什么我写你可以改变它。通常jsp文件保存在web-Inf内的文件夹中。但是你也可以改变文件的位置。它所有关于配置。只需在配置文件中提到正确的位置即可。我还没有尝试使用返回字符串的方法,但您可以尝试。 – Vaibs