如何根据值显示或隐藏HTML?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (56)

我有一个SpringMVC项目,它使用Thymeleaf进行前端数据绑定。当一个用户的名字被更新,我想显示一个成功的消息。 目前,用户被重定向到登录页面,但我希望在更新名称时显示一条消息,并在重定向之前等待5秒。我是否可以在页面的GET方法中传递一个Boolean值,并在调用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方法,我可以将一个Boolean值传递给get方法并在post方法中将其设置为true吗?然后在Thymeleaf中用th:if${resetSuccess}显示html?

就像这样:

<div th:if="${resetSuccess}">
    Username change successfull !
</div>
提问于
用户回答回答于

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

这是你的示例代码:

  1. 可能是用户移动GET方法页面。
  2. 用于在Ajax中调用POST方法。
  3. 用于在POST方法中更新用户信息。
  4. 在Ajax中使用响应并显示成功消息,等待5秒并重定向登录页面。

编辑你的POST方法

@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) {

        }
    });

扫码关注云+社区

领取腾讯云代金券