Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring Playframework2类似于春季反向布线_Spring_Routing_Reverse_Thymeleaf - Fatal编程技术网

Spring Playframework2类似于春季反向布线

Spring Playframework2类似于春季反向布线,spring,routing,reverse,thymeleaf,Spring,Routing,Reverse,Thymeleaf,谁能告诉我春天的路由机制 我在视图中使用thymeleaf,我想在视图中使用我的url的类名和方法名,就像在playframework中一样 但我喜欢在spring中在控制器方法声明之前定义url 你的建议怎么样。谢谢。这是spring框架中的一般流程 每当用户发出请求时,它将首先转到Spring的DispatcherServlet。DispatcherServlet任务是将请求发送到spring mvc控制器(自定义控制器) 您可以这样定义自定义控制器: @Controller public

谁能告诉我春天的路由机制

我在视图中使用thymeleaf,我想在视图中使用我的url的类名和方法名,就像在playframework中一样

但我喜欢在spring中在控制器方法声明之前定义url


你的建议怎么样。谢谢。

这是spring框架中的一般流程

  • 每当用户发出请求时,它将首先转到Spring的DispatcherServlet。DispatcherServlet任务是将请求发送到spring mvc控制器(自定义控制器)

  • 您可以这样定义自定义控制器:

  • @Controller
    public class MyResourceController {
    
      @RequestMapping("/user/{name}")
      public String showUser(String name, Model model) {
    
        ...
        return "show";
      }
    }
    
    <a th:uri="mvcUrl('MRC#ShowUser').buildAndExpand('bob')">Show user Bob</a>
    <!-- will generate "/user/bob" -->
    
    控制器:(代码段)

  • 在servlet上下文文件中,提到控制器的目录/包路径

    示例:

  • 在上面的控制器中,它返回字符串“test”,这是视图文件的名称(通常是jsp)

  • JSP文件:test.JSP

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <h1> Welcome to Spring!!!</h1>
    </body>
    </html>
    
    
    在此处插入标题
    欢迎来到春天!!!
    
  • 在servlet上下文中定义字符串名称到查看文件的逻辑映射,如下所示:
  • 示例:如何定义internalViewResolver如下所示

    <!-- Resolves views selected for rendering by @Controllers to .jsp resources in the       /WEB-INF/views directory -->
    
    <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>
    
    
    

    我认为,这与SpringMVC和路由流有关。希望对您有所帮助。

    自4.1版以来,Spring框架提供了一种从模板生成资源路由的方法(即视图中的反向路由)

    您可以检查,但它基本上使用自动生成的命名路由

    我不知道Thymeleaf是否支持它的标准方言,但是;如果没有,这可能是Thymeleaf项目的一个功能

    假设您有一个MyUserController,如下所示:

    @Controller
    public class MyResourceController {
    
      @RequestMapping("/user/{name}")
      public String showUser(String name, Model model) {
    
        ...
        return "show";
      }
    }
    
    <a th:uri="mvcUrl('MRC#ShowUser').buildAndExpand('bob')">Show user Bob</a>
    <!-- will generate "/user/bob" -->
    
    使用这种方言,您可以引用如下操作:

    @Controller
    public class MyResourceController {
    
      @RequestMapping("/user/{name}")
      public String showUser(String name, Model model) {
    
        ...
        return "show";
      }
    }
    
    <a th:uri="mvcUrl('MRC#ShowUser').buildAndExpand('bob')">Show user Bob</a>
    <!-- will generate "/user/bob" -->
    
    显示用户Bob
    
    看起来很有希望。当我用thymeleaf模板机制完成后,我会看看它。谢谢我已经提出了一个问题来询问thymeleaf维护人员:谢谢,伙计。我已经找到了一个最接近的解决方案,那就是:但是我不想使用一个专用的文件f.e.
    routes.conf
    ,我想使用spring mvc注释,比如:
    @RequestMapping(value=“/main\u page”,method=RequestMethod.GET)
    这个项目很不错,但它不支持spring mvc的所有功能:内容协商,请注意,此项目与
    @RequestMapping
    注释完全不兼容;这是它的核心。如果您对
    @RequestMapping
    注释感到满意,我建议您继续使用它。免责声明:我是这个项目的主要贡献者。所以你建议实现这一点的唯一方法是编写我自己的反向路由实现(我想是用java反射实现的)?