Spring启动多个控制器并扩展URL

时间:2017-09-11 12:29:58

标签: spring thymeleaf

这是控制器1:

@Controller
@RequestMapping("/clusters")
public class ClusterController {

    @Autowired
    private ClusterService clusterService;

    @RequestMapping(method = RequestMethod.GET)
    public String getAllClusters(Model model){

        List<Cluster> clusters = this.clusterService.getAllClusters();
        model.addAttribute("clusters", clusters);

        return "clusters";
    }

    @RequestMapping(value = "/clusterInfo", method = RequestMethod.GET)
    public String getCluster(@RequestParam("id") Integer id, Model model){
        Cluster cluster = this.clusterService.findClusterById(id);
        model.addAttribute("cluster", cluster);

        return "testcluster";
    }

控制器2:

@Controller
@RequestMapping("/requirements")
public class RequirementController {


    @RequestMapping("/")
    public String getRequirements(){

        return "requirements";
    }
}

首先,我看到所有集群。之后,我可以单击站点上的按钮以查看单个群集(来自控制器1的方法2)。

当我看到单个群集时,我想单击按钮以查看链接到该群集的要求。其方法在Controller 2中。

从控制器1到2时,我想拥有以下网址路径。

http://localhost:8080/clusters

http://localhost:8080/clusters/clusterInfo?id=1

http://localhost:8080/clusters/clusterInfo?id=1/requirements

这是我用来从网址2到3的按钮。 更

它不起作用并给我一个错误。我的问题是,如何使用指定的url路径从控制器1转到2并在控制器2中检索id = 1?

这是我的第一个项目,所以我对Spring Boot和Thymeleaf一无所知。

1 个答案:

答案 0 :(得分:1)

?标记查询字符串参数的开头,根据URI RFC标准,您无法在查询字符串参数后指定路径。 我建议改为将URI更改为:

http://localhost:8080/clusters/<clusterId>/clusterInfo
Ex: http://localhost:8080/clusters/1/clusterInfo

http://localhost:8080/clusters/<clusterId>/requeriments
Ex: http://localhost:8080/clusters/1/requirements