springMVC+thymeleaf怎么做ajax提交

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springMVC+thymeleaf怎么做ajax提交相关的知识,希望对你有一定的参考价值。

参考技术A 这个应用可以使用JavaConfig完成配置。我把它切分为下面几个部分:
ServicesConfig(服务配置)
无需扫描组件,配置真的非常简单:

@Configuration
public class ServicesConfig
@Autowired
private AccountRepository accountRepository;

@Bean
public UserService userService()
return new UserService(accountRepository);
参考技术B 这个应用可以使用JavaConfig完成配置。我把它切分为下面几个部分:
ServicesConfig(服务配置)
无需扫描组件,配置真的非常简单:

@Configuration
public class ServicesConfig
@Autowired
private AccountRepository accountRepository;

@Bean
public UserService userService()
return new UserService(accountRepository);

获取包含所有参数的完整当前 url thymeleaf

【中文标题】获取包含所有参数的完整当前 url thymeleaf【英文标题】:Get full current url thymeleaf with all parameters 【发布时间】:2016-03-27 10:47:44 【问题描述】:

我正在使用带有 spring mvc 的 thymeleaf。我想添加一个语言参数来更改语言环境。我是这样做的:

<a th:href="@$currentUrl(lang='es_ES')" th:if="__$#locale__ != 'es_ES'" >Sp</a>
<a th:href="@$currentUrl(lang='en_US')" th:if="__$#locale__ != 'en_US'" >Eng</a>

但在某些视图中,我在 URL 中有参数。如何添加参数? 遇到具体参数就知道怎么加了:

<a th:href="@$currentUrl(fooParam = $fooValue, lang='es_ES')" th:if="__$#locale__ != 'es_ES'" >Sp</a>

但我不知道所有视图中所有参数的数量和名称。如何获取当前url的所有参数?

【问题讨论】:

【参考方案1】:

您可以尝试创建一个实用服务来构建 URL 的参数部分。该实用程序方法将从 List 中获取输入并通过 StringBuffer 构建一个 String。结果将是一个字符串,就像您手动编写参数时一样。现在您可以使用 thymeleaf 中内置的 Pre-Parser 语法来调用该实用程序并构建您的最终 url。 这里是例子:

实用服务

@Service("thymeleafUtilsService")
public class ThymeleafUtilsService


    public String buildMultiParamPartUrl(List<String> paramNames)
    
        StringBuffer sb = new StringBuffer(0);

        for ( String paramName : paramNames )
        
            if ( sb.length() >= 0 )
            
                sb.append(",");
            
            sb.append(paramName).append("=$").append(paramName).append("");
        

        return sb.toString();
    


用于测试的控制器

@Controller("multiParamLinkController")
@RequestMapping(value = "/multiParamLink")
public class MultiParamLinkController


    @RequestMapping(value =
     "/",
      "" , method = RequestMethod.GET)
    public String testMultiParamsGenerator(Model model)
    
        List<String> paramNames = new ArrayList<>();
        paramNames.add("fooValue");
        paramNames.add("barValue");
        paramNames.add("lang");

        model.addAttribute("fooValue", "foo");
        model.addAttribute("barValue", "bar");
        model.addAttribute("lang", "US_us");

        model.addAttribute("paramNames", paramNames);

        return "multiParamLink/multiParamLink.html";
    


用于测试的 HtmlTemplate:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<head>
</head>
<body>
  <a th:href="@$currentUrl(__$@thymeleafUtilsService.buildMultiParamPartUrl(paramNames)__)">myLink</a>
  <h1>Result</h1>
  <pre th:inline="text">[[@$currentUrl(__$@thymeleafUtilsService.buildMultiParamPartUrl(paramNames)__)]]</pre>
</body>
</html>

这就是您通过示例得到的结果:

您现在可以自定义此示例以适合您的代码,例如解析 Map 而不是 List 或 String...

【讨论】:

谢谢,但我用语言菜单的自定义装饰器解决了我的问题。我也在 java 类中创建了一个带有自定义参数的 url。你的解决方案比我的简单。

以上是关于springMVC+thymeleaf怎么做ajax提交的主要内容,如果未能解决你的问题,请参考以下文章

在 spring mvc 中使用 thymeleaf 引用 .css 文件

基于jawr的springboot+springmvc+thymeleaf的web静态文件压缩方案

springMVC+thymeleaf form表单提交前后台数据传递

RESTful案例。SpringMVC+thymeleaf+BootStrap+RestFul实现员工信息的增删改查

spring boot使用SpringMVC怎么才能返回一个视图,比如jsp

Thymeleaf + Spring MVC中的绑定复选框