首页 文章

Thymeleaf(Java Spring):无法让mvc.uri工作

提问于
浏览
3

我最近开始使用Spring.io和Spring Boot进行开发,并将Thymeleaf集成到我的Web应用程序中 . 我现在正在尝试使用_2424757实现反向路由,但我似乎无法使其工作 .

这是Web控制器( HomeController ),显示我正在尝试反向路由的视图:

package com.twlab.billigalan.controller;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.method.annotation.MvcUriComponentsBuilder;

@Controller
public class HomeController {

    @RequestMapping("/")
    @ResponseBody
    public ModelAndView home() {
        //String url = MvcUriComponentsBuilder.fromMappingName("HousingLoansController#main").build();
        ModelAndView model = new ModelAndView();
        //model.addObject("url",url);
        model.setViewName("pages/main/home");
        return model;
    }

    @RequestMapping("/server-error")
    public String error(HttpServletRequest request, Model model) {
        model.addAttribute("errorCode", request.getAttribute("javax.servlet.error.status_code"));
        Throwable throwable = (Throwable) request.getAttribute("javax.servlet.error.exception");
        String errorMessage = null;
        if (throwable != null) {
          errorMessage = throwable.getMessage();
        }
        model.addAttribute("errorMessage", errorMessage);
        return "pages/main/error.html";
    }
}

这是观点:

<html
xmlns:th="http://www.thymeleaf.org"
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
layout:decorator="layouts/master.layout">
<head>
    <title>Billiga lån</title>
</head>
<body class="home">
    <div class="panel-body" layout:fragment="content">
        <a th:href="#{mvc.uri('HomeController#home').build()}">Test</a>
    </div>
</body>
</html>

这是主布局:

<!DOCTYPE html>
<html lang="sv"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:th="http://www.thymeleaf.org"
    xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <link href="http://cdn.jsdelivr.net/webjars/bootswatch-sandstone/3.3.2/css/bootstrap.min.css"
    th:href="@{/webjars/bootswatch-sandstone/3.3.2/css/bootstrap.min.css}"
    rel="stylesheet" media="screen" />
    <link rel="stylesheet" type="text/css" href="static/css/main.css" th:href="@{/css/main.css}" />
    <link rel="shortcut icon" href="static/favicon.ico" th:href="@{/favicon.ico}" />
    <title>Billiga lån</title>
</head>
<body>
<div id="wrapper" class="container">
    <div id="header" class="row">
        <div class="col-md-4">
            <a href="/" id="logo">Billiga lån</a>
            <span id="tagline">Billigaste lånen hittar du här!</span>
        </div>
        <div class="col-md-8"></div>
    </div>
    <!-- navbar -->
    <div class="navbar navbar-default" role="navigation">
        <div class="container">
            <div class="navbar-header">
                <button type="button" class="navbar-toggle collapsed"
                    data-toggle="collapse" data-target=".navbar-collapse">
                    <span class="sr-only">Visa meny</span> <span class="icon-bar"></span>
                    <span class="icon-bar"></span> <span class="icon-bar"></span>
                </button>
                <a href="/" class="navbar-brand frontpage"><i class="glyphicon glyphicon-home"></i></a>
            </div>
            <div class="navbar-collapse collapse">
                <ul class="nav navbar-nav navbar-left">
                    <li>
                        <a href="#">Låna pengar snabbt</a>
                    </li>
                    <li>
                        <a th:href="#{mvc.uri('HousingLoansController#main').build()}">Bolån</a>
                    </li>
                    <li>
                        <a href="#">Bil-lån</a>
                    </li>
                </ul>
            </div>
        </div>
    </div>
    <div id="main">
        <div id="sidebar" class="col-md-2 panel panel-default" layout:fragment="sidebar">
            <div class="panel-heading">Snabbstart</div>
            <div class="panel-body">
                <aside id="nav_menu-2" class="widget widget_nav_menu">
                    <div class="menu-sidomeny-container">
                        <ul id="menu-sidomeny" class="menu">
                            <li><a href="#">Låna pengar snabbt</a></li>
                            <li><a href="#">Lån med betalningsanmärkning</a></li>
                            <li><a th:uri="mvcUrl('HousingLoansController#main')">Bolån</a></li>
                            <li><a href="#">Bil-lån</a></li>
                        </ul>
                    </div>
                </aside>
            </div>
        </div>
        <div id="content" class="col-md-8">
            <div class="panel panel-default">
                <div class="panel-body" layout:fragment="content">

                </div>
                <!-- /panel-body -->
            </div>
            <!-- /panel -->
        </div>
        <!-- /#content -->
        <div id="right-sidebar" class="col-md-2 panel panel-default">
            <div class="panel-body" layout:fragment="right-sidebar">

            </div>
        </div>
    </div>
    <!-- /#main -->
</div>
<!-- /container -->
<div id="pre-footer">&nbsp;</div>
<!-- /pre-footer -->
<div id="footer"></div>
<!-- /footer -->
    <script src="http://cdn.jsdelivr.net/webjars/jquery/2.1.4/jquery.min.js"
        th:src="@{/webjars/jquery/2.1.4/jquery.min.js}"></script>
    <script src="http://cdn.jsdelivr.net/webjars/bootswatch-sandstone/3.3.2/js/bootstrap.min.js"
        th:src="@{/webjars/bootswatch-sandstone/3.3.2/js/bootstrap.min.js}"></script>
</body>
</html>

这是从布局引用的控制器( HousingLoansController ):

package com.twlab.billigalan.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class HousingLoansController {

    @RequestMapping("/bolan")
    public ModelAndView main() {
        ModelAndView model = new ModelAndView();
        model.addObject("quickstart",null);
        model.setViewName("pages/housing-loans/housing-loans");
        return model;
    }
}

这是错误消息:

2015-12-16 12:33:55.099 INFO 8072 --- [nio-8080-exec-1] oaccC [Tomcat] . [localhost] . [/]:初始化Spring FrameworkServlet'dispatcherServlet'2015-12-16 12 :33:55.099 INFO 8072 --- [nio-8080-exec-1] osweb.servlet.DispatcherServlet:FrameworkServlet'dispatcherServlet':初始化开始2015-12-16 12:33:55.116 INFO 8072 --- [nio- 8080-exec-1] osweb.servlet.DispatcherServlet:FrameworkServlet'dispatcherServlet':初始化完成时间为17 ms 2015-12-16 12:33:55.639 ERROR 8072 --- [nio-8080-exec-1] org.thymeleaf .TemplateEngine:[THYMELEAF] [http-nio-8080-exec-1]异常处理模板“pages / main / home”:无法解析为表达式:“#{mvc.uri('HousingLoansController#main') . build( )}“(layouts / master.layout:42)2015-12-16 12:33:55.644 ERROR 8072 --- [nio-8080-exec-1] oaccC [ . [ . [/] . [dispatcherServlet]:Servlet用于servlet [dispatcherServlet]的.service()与path []的上下文引发异常[请求处理失败;嵌套异常是org.thymeleaf.exceptions.TemplateProcessingException:无法解析为表达式:“#{mvc.uri('HousingLoansController#main') . build()}”(layouts / master.layout:42)]带有根本原因org .thymeleaf.exceptions.TemplateProcessingException:无法解析为表达式:“#{mvc.uri('HousingLoansController#main') . build()}”(layouts / master.layout:42)at org.thymeleaf.standard.expression . StandardExpressionParser.parseExpression(StandardExpressionParser.java:238)〜[thymeleaf-2.1.4.RELEASE.jar:2.1.4.RELEASE] org.thymeleaf.standard.expression.StandardExpressionParser.parseExpression(StandardExpressionParser.java:79)〜[thymeleaf -2.1.4.RELEASE.jar:2.1.4.RELEASE] at org.thymeleaf.standard.expression.StandardExpressionParser.parseExpression(StandardExpressionParser.java:40)〜[thymeleaf-2.1.4.RELEASE.jar:2.1.4 . 发布在org.thymeleaf.standard.processor.attr.AbstractStandardSingleAttributeModifierAttrProcessor.getTargetAttributeValue(AbstractStandardSingleAttributeModifierAttrPr) ocessor.java:65)~ [thymeleaf-2.1.4.RELEASE.jar:2.1.4.RELEASE] at org.thymeleaf.spring4.processor.attr.SpringHrefAttrProcessor.getTargetAttributeValue(SpringHrefAttrProcessor.java:68)〜[thymeleaf-spring4 -2.1.4.RELEASE.jar:2.1.4.RELEASE] at org.thymeleaf.processor.attr.AbstractSingleAttributeModifierAttrProcessor.getModifiedAttributeValues(AbstractSingleAttributeModifierAttrProcessor.java:59)〜[thymeleaf-2.1.4.RELEASE.jar:2.1.4 . 发布在org.thymeleaf.processor.attr.AbstractAttributeModifierAttrProcessor.processAttribute(AbstractAttributeModifierAttrProcessor.java:62)〜[thymeleaf-2.1.4.RELEASE.jar:2.1.4.RELEASE]的org.thymeleaf.processor.attr.AbstractAttrProcessor . orProcess(AbstractAttrProcessor.java:87)〜[thymeleaf-2.1.4.RELEASE.jar:2.1.4.RELEASE] org.thymeleaf.processor.AbstractProcessor.process(AbstractProcessor.java:212)~ [thymeleaf-2.1.4 .rELEASE.jar:2.1.4.RELEASE]在org.t的org.thymeleaf.dom.Node.applyNextProcessor(Node.java:1017)〜[thymeleaf-2.1.4.RELEASE.jar:2.1.4.RELEASE] hymeleaf.dom.Node.processNode(Node.java:972)~ [thymeleaf-2.1.4.RELEASE.jar:2.1.4.RELEASE] org.thymeleaf.dom.NestableNode.computeNextChild(NestableNode.java:695)~ [thymeleaf-2.1.4.RELEASE.jar:2.1.4.RELEASE] org.thymeleaf.dom.NestableNode.doAdditionalProcess(NestableNode.java:668)~ [thymeleaf-2.1.4.RELEASE.jar:2.1.4 . 发布在org.thymeleaf.dom.Node.processNode(Node.java:990)〜[thymeleaf-2.1.4.RELEASE.jar:2.1.4.RELEASE] org.thymeleaf.dom.NestableNode.computeNextChild(NestableNode . java:695)〜[thymeleaf-2.1.4.RELEASE.jar:2.1.4.RELEASE] at org.thymeleaf.dom.NestableNode.doAdditionalProcess(NestableNode.java:668)~ [thymeleaf-2.1.4.RELEASE.jar :2.1.4.RELEASE] org.thymeleaf.dom.Node.processNode(Node.java:990)〜[thymeleaf-2.1.4.RELEASE.jar:2.1.4.RELEASE] org.thymeleaf.dom.NestableNode .computeNextChild(NestableNode.java:695)〜[thymeleaf-2.1.4.RELEASE.jar:2.1.4.RELEASE] org.thymeleaf.dom.NestableNode.doAdditionalProcess(NestableNode.java:668)〜[thymeleaf-2.1.4.RELEASE.jar:2.1.4.RELEASE] org.thymeleaf.dom.Node.processNode(Node.java:990)~ [thymeleaf-2.1.4.RELEASE.jar:2.1.4 .RELEASE] org.thymeleaf.dom.NestableNode.computeNextChild(NestableNode.java:695)〜[thymeleaf-2.1.4.RELEASE.jar:2.1.4.RELEASE] org.thymeleaf.dom.NestableNode.doAdditionalProcess(NestableNode) .java:668)〜[thymeleaf-2.1.4.RELEASE.jar:2.1.4.RELEASE]在org.thymeleaf.dom.Node.processNode(Node.java:990)〜[thymeleaf-2.1.4.RELEASE . jar:2.1.4.RELEASE]在org.thymeleaf.dom的org.thymeleaf.dom.NestableNode.computeNextChild(NestableNode.java:695)〜[thymeleaf-2.1.4.RELEASE.jar:2.1.4.RELEASE] . 在org.thymeleaf.dom.Node.processNode(Node.java:990)〜[thymeleaf-2.1]的NestableNode.doAdditionalProcess(NestableNode.java:668)〜[thymeleaf-2.1.4.RELEASE.jar:2.1.4.RELEASE] .4.RELEASE.jar:2.1.4.RELEASE] org.thymeleaf.dom.NestableNode.computeNextChild(NestableNode.java:695)〜[thymeleaf-2.1.4.RELEASE.jar:2.1.4.RELEASE] at org .thymeleaf.dom.NestableNode.doAdditionalProcess(Nestab leNode.java:668)~ [thymeleaf-2.1.4.RELEASE.jar:2.1.4.RELEASE] at org.thymeleaf.dom.Node.processNode(Node.java:990)~ [thymeleaf-2.1.4.RELEASE .jar:2.1.4.RELEASE]在org.thymeleaf.dom的org.thymeleaf.dom.NestableNode.computeNextChild(NestableNode.java:695)〜[thymeleaf-2.1.4.RELEASE.jar:2.1.4.RELEASE] .NestableNode.doAdditionalProcess(NestableNode.java:668)〜[thymeleaf-2.1.4.RELEASE.jar:2.1.4.RELEASE] org.thymeleaf.dom.Node.processNode(Node.java:990)~ [thymeleaf- 2.1.4.RELEASE.jar:2.1.4.RELEASE]在org.thymeleaf.dom.NestableNode.computeNextChild(NestableNode.java:695)〜[thymeleaf-2.1.4.RELEASE.jar:2.1.4.RELEASE] at org.thymeleaf.dom.NestableNode.doAdditionalProcess(NestableNode.java:668)〜[thymeleaf-2.1.4.RELEASE.jar:2.1.4.RELEASE] org.thymeleaf.dom.Node.processNode(Node.java:990) )〜[thymeleaf-2.1.4.RELEASE.jar:2.1.4.RELEASE]在org.thymeleaf.dom.NestableNode.computeNextChild(NestableNode.java:695)〜[thymeleaf-2.1.4.RELEASE.jar:2.1 . 4.RELEASE]在org.thymeleaf.dom.NestableNode.doAdditio nalProcess(NestableNode.java:668)〜[thymeleaf-2.1.4.RELEASE.jar:2.1.4.RELEASE] org.thymeleaf.dom.Node.processNode(Node.java:990)~ [thymeleaf-2.1.4 .RELEASE.jar:2.1.4.RELEASE]在org.thymeleaf的org.thymeleaf.dom.Document.process(Document.java:93)〜[thymeleaf-2.1.4.RELEASE.jar:2.1.4.RELEASE] .TemplateEngine.process(TemplateEngine.java:1155)〜[thymeleaf-2.1.4.RELEASE.jar:2.1.4.RELEASE] org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1060)〜[thymeleaf-2.1 . 4.RELEASE.jar:2.1.4.RELEASE]在org.thymeleaf的org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1011)〜[thymeleaf-2.1.4.RELEASE.jar:2.1.4.RELEASE] . spring.view.ThymeleafView.renderFragment(ThymeleafView.java:335)~ [thymeleaf-spring4-2.1.4.RELEASE.jar:2.1.4.RELEASE] org.thymeleaf.spring4.view.ThymeleafView.render(ThymeleafView.java) :190)〜[thymeleaf-spring4-2.1.4.RELEASE.jar:2.1.4.RELEASE] org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1244)〜[spring-webmvc-4.2 . 3.RELEASE.jar:4 . 2.3.RELEASE]在org.springframework.web的org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1027)〜[spring-webmvc-4.2.3.RELEASE.jar:4.2.3.RELEASE] . org.springframework.web.servlet.DispatcherServlet.doService上的servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:971)~ [spring-webmvc-4.2.3.RELEASE.jar:4.2.3.RELEASE](DispatcherServlet.java:893 )〜[spring-webmvc-4.2.3.RELEASE.jar:4.2.3.RELEASE] org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)~ [spring-webmvc-4.2.3 . RELEASE.jar:4.2.3.RELEASE]在org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)〜[spring-webmvc-4.2.3.RELEASE.jar:4.2.3.RELEASE] at at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java)中的javax.servlet.http.HttpServlet.service(HttpServlet.java:622)~ [tomcat-embed-core-8.0.28.jar:8.0.28] :846)~javax.servlet.http.HttpServlet.ser上的[spring-webmvc-4.2.3.RELEASE.jar:4.2.3.RELEASE]恶意(HttpServlet.java:729)〜[tomcat-embed-core-8.0.28.jar:8.0.28] org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)〜[tomcat-embed -core-8.0.28.jar:8.0.28] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)~ [tomcat-embed-core-8.0.28.jar:8.0.28]在org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)〜[tomcat-embed-websocket-8.0.28.jar:8.0.28] atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)〜[Tomcat的嵌入芯-8.0.28.jar:8.0.28]在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain .java:206)〜[tomcat-embed-core-8.0.28.jar:8.0.28]在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:316)〜[spring-security- web-4.0.3.RELEASE.jar:4.0.3.RELEASE]在org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:126)〜[spring-security-web-4.0.3 .RELEASE.jar:4.0.3.RELEASE]在org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:90)〜[spring-security-web-4.0.3.RELEASE.jar: 4.0.3.RELEASE]在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:330)〜[spring-security-web-4.0.3.RELEASE.jar:4.0.3.RELEASE] at at org.springframework.security.web.access.Excepti onTranslationFilter.doFilter(ExceptionTranslationFilter.java:114)〜[ spring 安全网络4.0.3.RELEASE.jar:4.0.3.RELEASE]在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java :330)〜[spring-security-web-4.0.3.RELEASE.jar:4.0.3.RELEASE] org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:122)〜[spring- security-web-4.0.3.RELEASE.jar:4.0.3.RELEASE]在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:330)〜[spring-security-web-4.0.3 .RELEASE.jar:4.0.3.RELEASE]在org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)〜[spring-security-web-4.0.3.RELEASE.jar:4.0 . 3.RELEASE] org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:330)〜[spring-security-web-4.0.3.RELEASE.jar:4.0.3.RELEASE] at org . springframework.security.web.ser vletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:169)〜[ spring 安全网络4.0.3.RELEASE.jar:4.0.3.RELEASE]在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(的FilterChainProxy .java:330)〜[spring-security-web-4.0.3.RELEASE.jar:4.0.3.RELEASE] org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:48)〜[ spring-security-web-4.0.3.RELEASE.jar:4.0.3.RELEASE] at org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:330)〜[spring-security-web-4.0 .3.RELEASE.jar:4.0.3.RELEASE]在org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:205)〜[spring-security-web-4.0.3.RELEASE.jar: 4.0.3.RELEASE]在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:330)〜[spring-security-web-4.0.3.REL EASE.jar:4.0.3.RELEASE]在org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:120)〜[spring-security-web-4.0.3.RELEASE.jar:4.0 .3.RELEASE] org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:330)〜[spring-security-web-4.0.3.RELEASE.jar:4.0.3.RELEASE] at org org.springframework.web.filter上的.springframework.security.web.csrf.CsrfFilter.doFilterInternal(CsrfFilter.java:96)〜[spring-security-web-4.0.3.RELEASE.jar:4.0.3.RELEASE] . OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)〜[ spring 网络4.2.3.RELEASE.jar:4.2.3.RELEASE]在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:330 )〜[spring-security-web-4.0.3.RELEASE.jar:4.0.3.RELEASE] org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:64)〜[spring-security- web-4.0.3.RELEASE.jar:4.0.3.RELEASE] at org.springframework.web.filter.OncePerRequ estFilter.doFilter(OncePerRequestFilter.java:107)〜[ spring 网络4.2.3.RELEASE.jar:4.2.3.RELEASE]在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:330 )〜[spring-security-web-4.0.3.RELEASE.jar:4.0.3.RELEASE] org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:91)〜[spring-security- web-4.0.3.RELEASE.jar:4.0.3.RELEASE] atorg.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:330)〜[spring-security-web-4.0.3.RELEASE.jar:4.0.3.RELEASE] org.springframework.security.web org.springframework.web.filter.OncePerRequestFilter中的.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:53)〜[spring-security-web-4.0.3.RELEASE.jar:4.0.3.RELEASE] . doFilter(OncePerRequestFilter.java:107)〜[spring-web-4.2.3.RELEASE.jar:4.2.3.RELEASE]在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:330)〜 [spring-security-web-4.0.3.RELEASE.jar:4.0.3.RELEASE]在org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:213)〜[spring-security-web-4.0 . 3.RELEASE.jar:4.0.3.RELEASE]在org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:176)〜[spring-security-web-4.0.3.RELEASE.jar:4.0.3 .RELEASE]在org.springframework.web.filter.D在org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)的elegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)〜[spring-web-4.2.3.RELEASE.jar:4.2.3.RELEASE]〜 [spring-web-4.2.3.RELEASE.jar:4.2.3.RELEASE]在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)〜[tomcat-embed-core-8.0.28 . jar:8.0.28] org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)〜[tomcat-embed-core-8.0.28.jar:8.0.28] org.springframework.web . 在org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)的filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)〜[spring-web-4.2.3.RELEASE.jar:4.2.3.RELEASE] )〜[spring-web-4.2.3.RELEASE.jar:4.2.3.RELEASE]在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)〜[tomcat-embed-core-8.0 . 28.jar:8.0.28]在org.apache.catalina.core.ApplicationFil terChain.doFilter(ApplicationFilterChain.java:206)~ [tomcat-embed-core-8.0.28.jar:8.0.28] at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:87)〜[spring -web-4.2.3.RELEASE.jar:4.2.3.RELEASE]在org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)〜[spring-web-4.2.3.RELEASE.jar: 4.2.3.RELEASE]在org.apache.catalina的org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)〜[tomcat-embed-core-8.0.28.jar:8.0.28] . core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)~ [tomcat-embed-core-8.0.28.jar:8.0.28] at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77)〜 [spring-web-4.2.3.RELEASE.jar:4.2.3.RELEASE]在org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)〜[spring-web-4.2.3.RELEASE . jar:4.2.3.RELEASE] at org.apache.catalina.core.ApplicationFilterCha in.internalDoFilter(ApplicationFilterChain.java:239)〜[tomcat-embed-core-8.0.28.jar:8.0.28] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)~ [tomcat -embed-core-8.0.28.jar:8.0.28] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:121)~ [spring-web-4.2.3.RELEASE.jar:4.2 . 3.RELEASE]在org.apache.catalina的org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)〜[spring-web-4.2.3.RELEASE.jar:4.2.3.RELEASE] . core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)〜[tomcat-embed-core-8.0.28.jar:8.0.28] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)~ [tomcat-embed-core-8.0.28.jar:8.0.28]在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:217)〜[tomcat-embed-core-8.0.28.jar: 8.0.28] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java: 106)[tomcat-embed-core-8.0.28.jar:8.0.28] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)[tomcat-embed-core-8.0.28.jar :8.0.28] org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)[tomcat-embed-core-8.0.28.jar:8.0.28] org.apache.catalina.valves . 在org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)的ErrorReportValve.invoke(ErrorReportValve.java:79)[tomcat-embed-core-8.0.28.jar:8.0.28][tomcat-embed-core-8.0.28.jar:8.0.28]在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)[tomcat-embed-core-8.0.28.jar:8.0 .28]在org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)[tomcat-embed-core-8.0.28.jar:8.0.28] at org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler . org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun(NioEndpoint.java:1500)[tomcat] -embed-core-8.0.28.jar:8.0.28] at org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.run(NioEndpoint.java:1456)[tomcat-embed-core-8.0.28.jar :8.0.28] at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)[na:1.8.0_65] at java.util.concurrent.ThreadPoolExecutor $ Worker.run(Unknown Source)[na:1.8.0_65] at at org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61)[tomcat-embed-core-8.0.28.jar:8.0.28] at java.lang.Thread.run(Unknown Sour) ce)[na:1.8.0_65]

1 回答

  • 4

    看看the example here . #mvc 是一个表达式对象,因此必须从百万美元表达式中访问,例如:

    <a th:href="${#mvc.url('HomeController#home').build()}">Test</a>
    

    请注意, #mvc 包含在 ${...} 表示法中并引用 .

相关问题