我有两个页面:home.jsp 和 stylechoosertable.jsp。 home.jsp 有一个指向 stylechoosertable.jsp 的简单链接。两者都在 src-main-webapp-views 中。启动应用程序运行良好,加载 home.jsp 也很好。但是,当我单击该链接时,它会转到 404 Not Found 页面。
这是 HomeController.java
@Controller
public class HomeController {
private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
/**
* Simply selects the home view to render by returning its name.
*/
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(Model model) {
logger.info("Welcome home! The client locale is {}.");
return "home";
}
}
这里是CSSTableController.java
@Controller
public class CSSTableController {
private static final Logger logger = LoggerFactory.getLogger(CSSTableController.class);
private final CSSService cssService;
@Autowired
public CSSTableController(CSSService cssService) {
this.cssService = cssService;
}
@RequestMapping(value = "/stylechoosertable.jsp", method = RequestMethod.GET)
public List<StyleChooser> get() {
return cssService.getAllStyleChoosers();
}
}
servlet-context.xml
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="prefix" value="/WEB-INF/views/" />
<beans:property name="suffix" value=".jsp" />
</beans:bean>
web.xml
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
我注意到的一些事情:
只有 local:8080/myspringmvc/才会显示主页。 local:8080/myspringmvc/home.jsp 会出现相同的 404 错误,但我没有得到。
启动时,我可以看到它正确执行请求/处理程序映射:
信息:org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping - 映射“{[/stylechoosertable.jsp],methods = [GET],params = [],headers = [],consumes = [ ],products=[],custom=[]}"到 public java.util.List com.css.genapp.CSSTableController.get()
信息:org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping - 映射“{[/],methods=[GET],params=[],headers=[],consumes=[],产生=[],custom=[]}"到 public java.lang.String com.css.genapp.HomeController.home(org.springframework.ui.Model)
- 当我访问 home.jsp 或 stylechoosertable.jsp 时,它不会抛出任何 org.springframework.web.servlet.PageNotFound 错误,因此我知道映射就在那里。
我不明白为什么它没有“击中”我的 stylechoosertable.jsp。有什么想法吗?
最佳答案
好吧,我不认为我能够正确地回答你的问题,但是如果你想从 home.jsp 获得简单的导航功能,即单击链接时,它应该转到 stylechoosertable.jsp,然后一个明确的解决方案就是有一个像
这样的链接<a href="stylechoosertable">SomeName</a>
现在只需将其映射到 Controller 中
@RequestMapping(value = "/stylechoosertable")
public String goToSCT() {
return "stylechoosertable";
}
如果/WEB-INF/views/中有任何可用的 stylechoosertable.jsp,它就会被简单地调用。
第二个问题 local:8080/myspringmvc/
工作而不是 local:8080/myspringmvc/home.jsp
背后的原因基本上是缺乏 RequestMapping
为 /home.jsp
,对于根 URL 即 /
,映射位于 HomeController
关于java - Spring MVC 页面到页面导航不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23096555/