Spring 根据值显示或隐藏HTML

Spring 根据值显示或隐藏HTML,spring,spring-mvc,thymeleaf,Spring,Spring Mvc,Thymeleaf,我有一个springmvc项目,它使用Thymeleaf进行前端数据绑定。我想在更新用户名时显示一条成功消息。以下是更新屏幕:。目前,用户被重定向到登录页面,但我想在名称更新时显示一条消息,并等待5秒钟后再重定向。我可以在页面的get方法中传递一个布尔值,并在调用post方法时将其设置为true吗 @RequestMapping(value = "/resetUserName", method = RequestMethod.GET) public ModelAndView displayR

我有一个springmvc项目,它使用Thymeleaf进行前端数据绑定。我想在更新用户名时显示一条成功消息。以下是更新屏幕:。目前,用户被重定向到登录页面,但我想在名称更新时显示一条消息,并等待5秒钟后再重定向。我可以在页面的get方法中传递一个布尔值,并在调用post方法时将其设置为true吗

 @RequestMapping(value = "/resetUserName", method = RequestMethod.GET)
 public ModelAndView displayResetUsernamePage(ModelAndView modelAndView, @ModelAttribute User user) {
    logger.info("Entered displayResetUsernamePage function");
    return modelAndView;
 }

  @RequestMapping(value = "/resetUserName", method = RequestMethod.POST)
public ModelAndView setNewUsername(ModelAndView modelAndView, @ModelAttribute User user, HttpServletRequest httpServletRequest, @AuthenticationPrincipal User currentUser) throws ServletException {
    logger.info("Entered setNewUsername function");
    User exists = userService.findUserByUserName(user.getUsername());
    if (exists == null) {
        User updatedUser = userService.updateUsername(currentUser.getUsername(), user);           

        logger.info("Username change successful: " + currentUser.getUsername() + " is now " + user.getUsername());

        emailService.sendEmailResetUsername(user, currentUser);

    } else {
        throw new ResourceNotFoundException();
    }        

    modelAndView.setViewName("login");
    httpServletRequest.logout();
    return modelAndView;
}
下面是get和post方法,我可以将布尔值传递给get方法并在post方法中将其设置为true吗?然后在Thymeleaf中用th:if${resetSuccess}显示html

大概是这样的:

<div th:if="${resetSuccess}">
    Username change successfull !
</div>

用户名更改成功!

您希望更新用户信息并等待5秒钟,然后重定向到登录页面

这是您的示例代码:

  • 也许用户会移动“获取方法”页面
  • 用于在ajax中调用post方法
  • 用于更新post方法中的用户信息
  • 在ajax中使用响应并显示成功消息,然后等待5秒钟并重定向登录页面
  • 编辑您的发布方法

    @RequestMapping(value = "/reset/account/{idx}", method = RequestMethod.POST)
    public @ResponseBody String resetAccount(@PathVariable long idx, @RequestBody User user) {
    
        // select user by idx.
    
        // update old user by new user. 
    
        // need to handle return string message.
        return "success";
    }
    
    ajax

    // you need user idx.
    var userIdx = 32;
    
    // make user JSON.
    var user = {
        "name" : "username"
    }
    
    user = JSON.stringify(user);
    
    
    $.ajax({
            url : "/reset/account" + userIdx,
            type : 'POST',
            data : user,
            contentType : 'application/json',
            dataType : 'text',
            success : function(response) {
    
                // updated user information.
                if ("success" == response) {
    
                    // show success message box.
    
                    setTimeout(function() {
                        location.href = "/your/login/page";
                    }, 5000);
    
                } else {
                    // handling false or fail.
                }
            },
    
            error : function(request, status, error) {
    
            }
        });
    

    我已经用get和post方法更新了我的原始帖子。以你为例,我必须在post方法中设置成功?在重定向到登录页面之前,我可以在哪里显示消息?@Audiosleef-updated-answer。试试这个。也许它有用