代码之家  ›  专栏  ›  技术社区  ›  Audiosleef

根据值显示或隐藏HTML

  •  0
  • Audiosleef  · 技术社区  · 6 年前

    我有一个spring mvc项目,它使用thymeleaf进行前端数据绑定。当用户的名字被更新时,我想展示一个成功的信息。以下是更新屏幕: example . 目前,用户被重定向到登录页面,但我想在名称更新时显示一条消息,并等待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吗?然后用th:if${resetsuccess}在thymeleaf中显示它以显示html?

    像这样的:

    <div th:if="${resetSuccess}">
        Username change successfull !
    </div>
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   0gam    6 年前

    您要更新用户信息并等待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";
    }
    

    阿贾克斯

    // 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) {
    
            }
        });