当前位置: 首页 > 知识库问答 >
问题:

Thymeleaf:在从Spring MVC控制器重定向时,Thymeleaf不反映新值

左丘源
2023-03-14

我是新来的thymeleaf, thymeleaf模板引擎真的很好,但我面临着一些关键的问题,这对我来说很难弄清楚。我的流程如下:

首先调用add user控制器并在数据库中添加新用户。保存新用户后,重定向到用户列表页。当用户列表页面打开时,我的新用户不会显示在用户列表上。刷新页面后,我的新用户可见。当我调试代码并检查用户列表控制器时。用户列表控制器获取新用户详细信息,但我的thymeleaf不显示新更改。我的胸腺叶缓存也是假的。我使用thymeleaf布局方言如下:

https://github.com/ultraq/thymeleaf-layout-dialect

我的控制器代码:

@RequestMapping(value="/add-user", method=RequestMethod.POST)
public String addEditCategory(User user, RedirectAttributes attributes) {

    userService.saveNewUser(user);
    return "redirect:/user/userlist";
}

@RequestMapping(value="/userlist", method=RequestMethod.GET)
public String productCategory(Model model, Pageable pageable) {

    Page<User> page = productCategoryService.findAllUsers(pageable);
    List<User> users= page.getContent();
    PageWrapper<ProductCategory> pageWrapper = new PageWrapper<User>(page, "/user/userlist");

    model.addAttribute("page", pageWrapper);
    model.addAttribute("users", categories);
    return "admin/user/view-users";
}

My Thymeleaf配置:

/* Thymeleaf configuration */
private ServletContextTemplateResolver templateResolver() {
    ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver();

    templateResolver.setPrefix("/WEB-INF/views/");
    templateResolver.setSuffix(".html");
    templateResolver.setTemplateMode("HTML5");
    templateResolver.setCacheable(false);

    return templateResolver;
}

private SpringTemplateEngine templateEngine() {
    SpringTemplateEngine templateEngine = new SpringTemplateEngine();
    templateEngine.addDialect(new LayoutDialect());
    templateEngine.setTemplateResolver(templateResolver());
    return templateEngine;
}

private ThymeleafViewResolver thymeleafViewResolver() {
    ThymeleafViewResolver thymeleafViewResolver = new ThymeleafViewResolver();

    thymeleafViewResolver.setCharacterEncoding("UTF-8");
    thymeleafViewResolver.setViewClass(ThymeleafView.class);
    thymeleafViewResolver.setViewNames(new String[]{"user/**"});
    thymeleafViewResolver.setTemplateEngine(templateEngine());
    return thymeleafViewResolver;
}

我正在使用注册视图解析器的内容协商视图解析器。问题,就像缓存问题。但我该怎么解决呢?

使现代化

添加用户:-点击按钮和fancybox将出现。在花式框中,我正在使用表单并在/add-userurl上提交表单。

使现代化

ContentNegotingViewResolver代码:

@Bean
public ViewResolver setupViewResolver(ContentNegotiationManager manager) {
    List<ViewResolver> resolvers = new ArrayList<ViewResolver>();

    resolvers.add(tilesViewResolver());
    resolvers.add(thymeleafViewResolver());
    resolvers.add(jspViewResolver());

    ContentNegotiatingViewResolver viewResolver = new ContentNegotiatingViewResolver();
    viewResolver.setViewResolvers(resolvers);
    viewResolver.setContentNegotiationManager(manager);
    return viewResolver;
}

共有1个答案

南宫勇军
2023-03-14

要禁用缓存,请添加-

thymeleafViewResolver.setCache(false);
 类似资料:
  • 我在使用thymeleaf 3将参数从html传递到spring mvc 4控制器时遇到了麻烦。 我还有一个类Currency,它带有字段“id”和“name”,以及它们的getter和setter。现在使用这段代码,我得到一个错误: 严重:路径为[]的上下文中servlet[dispatcher]的servlet.service()引发异常[请求处理失败;嵌套异常为org.thymeleaf.e

  • 我是百里香菜鸟。我试图创建一个简单的crud应用程序。我试图在删除按钮上删除客户类的对象。我如何使用百里香叶为调用deleteUser的方法设置参数(例如- id)。这是我的控制器。 以下是我的看法。

  • 我在将对象列表从Thymeleaf保存到控制器时遇到了一个大问题。thymeleaf中的对象列表由Jquery生成。但我不知道如何将数据传输到控制器,对象列表不知道大小。因为用户可以随时添加它。请帮助我将thymeleaf中的列表对象发送给控制器。 我创建了一个具有1个属性的新类:ArrayList loaiDoans;“LoaiDoan”是我想要保存的对象。使用该类是将列表“loaidon”从t

  • 我正在尝试在更改选项后将我的Thymeleaf超文本标记语言中已经提供的List传回控制器。我尝试过隐藏输入,但不幸的是,它还不起作用。 我的表单如下所示(控制器已经提供了“电影”列表) 我的控制器看起来像这样: 期待有人能帮助我!

  • 我正在使用thymeleaf和Spring MVC进行Post/Redirect/Get操作,效果很好。除了当我进入页面进行获取和刷新外,ModelAttribute也会重置。这是我正在做的类似事情的一个片段。 我的对象只是一个简单的java bean,具有一个名为

  • 问题内容: 我必须将数据从html页面(带有很少输入文本字段的简单形式)发送到页面控制器,然后再发送到数据库。我正在使用3.0版的百里香2.0.17。我搜索并检查了一些解决方案,但是没有用。也许有人遇到了同样的问题,并找到了一些好的解决方案。请帮忙。谢谢 问题答案: 如本教程所建议,你需要使用,并在中创建一个表单。 看起来像这样: 控制器: HTML: Foo.java: 希望这可以帮助。