java - Spring MVC 页面到页面导航不起作用

标签 java spring jsp spring-mvc

我有两个页面: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>

我注意到的一些事情:

  1. 只有 local:8080/myspringmvc/才会显示主页。 local:8080/myspringmvc/home.jsp 会出现相同的 404 错误,但我没有得到。

  2. 启动时,我可以看到它正确执行请求/处理程序映射:

信息: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)

  1. 当我访问 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/

相关文章:

Java寻找默认网关的网络接口(interface)

spring - ContextLoader - 根 WebApplicationContext 在 ubuntu Tomcat 上初始化 3 次

spring - 我可以在颁发访问 token 时包含用户信息吗?

java - 如何将原始 HTML 从 java spring Controller 传递到 jsp View

java - mapreduce 计数差异

java - 将 BlockingQueue 传递给 Spring KafkaListener

java - JSP 类属性无效

java - Eclipse jsp 文件格式化

java - 从命令行启动Spring Boot中的多个外部属性文件

java - 如何使用 QueueChannel 和 ServiceActivator 正确配置 TCP inboundAdapter