【问题标题】:How do I get hyperlinks to play well with SpringBoot controller?如何让超链接与 Spring Boot 控制器配合使用?
【发布时间】:2019-12-05 04:45:24
【问题描述】:

我正在创建一个简单的网站作为 SpringBoot 应用程序。由于某种原因,各个页面之间的超链接不起作用。如果我将所有 html 文档放在一个文件夹中并使用浏览器打开,它似乎工作正常,但 SpringBoot 应用程序中的相同文件似乎不起作用。这使我怀疑它可能是控制器,但我似乎无法确切找到问题所在。

文档本身都在 SB 项目的 src/main/resources 目录的“templates”文件夹中(我使用的是 Eclipse)。主页“index.html”确实有效。但是,其他页面的链接都不起作用。

package controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController

public class VWDController {

        @RequestMapping(value="/")
        public String index() {
            return "index";
        }
        @RequestMapping(value="doityourself")
        public String doityourself() {
            return "doityourself";
        }
        @RequestMapping(value="viking")
        public String viking() {
            return "viking";
        }       
        @RequestMapping(value="enemy")
        public String enemy() {
            return "enemy";
        }   
        @RequestMapping(value="demopage")
        public String demopage() {
            return "demopage";


}
}

html 文档中的超链接代码:

Click <a href="demopage">here</a> 

online <a href="doityourself">presence.</a>

更新的代码,前两位贡献者的后期建议(谢谢!)。

【问题讨论】:

    标签: java html spring-boot hyperlink


    【解决方案1】:

    试试这个:

    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    @Controller
    public class VWDController {
    
        @ResponseBody
        @RequestMapping(value = "/") // This seems to work fine
        public String index() {
            return "index";
        }
    
        @ResponseBody
        @RequestMapping(value = "/doityourself")
        public String doityourself() {
            return "/doityourself"; // adding and removing
        } // the initial "/" has
        // no effect
    
        @ResponseBody
        @RequestMapping(value = "/viking")
        public String viking() {
            return "/viking";
        }
    
        @ResponseBody
        @RequestMapping(value = "/enemy")
        public String enemy() {
            return "/enemy";
        }
    
        @ResponseBody
        @RequestMapping(value = "/demopage")
        public String demopage() {
            return "/demopage";
    
        }
    }
    
    URL: http://localhost:8080/doityourself
    Result: '/doityourself'
    

    【讨论】:

    • 非常感谢您的意见。但是,这些更改似乎并没有改变任何行为。索引页面仍然正确加载,并且链接仍然不起作用。当前控制器代码:
    • 包控制器;导入 org.springframework.web.bind.annotation.RequestMapping;导入 org.springframework.web.bind.annotation.RestController; @RestController public class VWDController { @RequestMapping(value="/") public String index() { return "index"; } @RequestMapping(value="doityourself") public String doityourself() { return "doityourself"; } @RequestMapping(value="viking") public String viking() { return "viking"; } }
    • 抱歉,格式一团糟。所以在这方面不是很用户友好。我会解决的。
    • 好的,所以在 cmets 中无法使用换行符,因此无法将代码放在那里。
    • 好的,所以我更新了代码,实现了 Bor Laze 和 Ilya Serebryannikov 的建议。这仍然行不通。索引页面仍然正常,所有其他页面的白标错误页面。超链接中的初始“/”没有任何区别。
    【解决方案2】:
    1. 删除返回语句中的斜杠
    2. 在您的链接中使用您的端点,而不是 HTML 文件。

    Click &lt;a href="/demopage"&gt;here&lt;/a&gt;

    【讨论】:

      猜你喜欢
      • 2020-01-26
      • 1970-01-01
      • 2018-08-16
      • 2016-03-30
      • 1970-01-01
      • 2015-05-07
      • 2017-03-07
      • 2020-11-13
      • 2016-01-19
      相关资源
      最近更新 更多