簡體   English   中英

Spring MVC驗證不起作用

[英]Spring MVC validation doesn't work

我想用Spring MVC實現簡單的驗證。

我添加到pom.xml

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>4.2.0.Final</version>
    </dependency>

這是我的POJO

import org.hibernate.validator.constraints.Range;

public class Goal {
    @Range(min = 1, max = 120)
    private int minutes;
    // getters + setters

控制器實現:

import javax.validation.Valid;

@Controller
@SessionAttributes("goal")
public class GoalController {

    @RequestMapping(value = "addGoal", method = RequestMethod.GET)
    public String addGoal(Model model) {
        Goal goal = new Goal();
        goal.setMinutes(10);
        model.addAttribute("goal", goal);
        return "addGoal";
    }

    @RequestMapping(value = "addGoal", method = RequestMethod.POST)
    public String updateGoal(@Valid @ModelAttribute(value = "goal") Goal goal, BindingResult result) {
        System.out.printf("Result has errors: %s%n", result.hasErrors());
        System.out.printf("Minutes updated: %d%n", goal.getMinutes());
        if (result.hasErrors()) {
            return "addGoal";
        }
        return "redirect:/addMinutes.html";
    }
}

addGoal.jsp頁面:

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<html>
<head>
    <title>Add Goal Here</title>
    <style>
        .error {
            color: #ff0000;
        }

        .errorblock {
            color: #000;
            background-color: #ffeeee;
            border: 3px solid #ff0000;
            padding: 8px;
            margin: 16px;
        }
    </style>
</head>

<body>
Language: <a href="?language=en">English</a> | <a href="?language=uk">Ukrainian</a>
<form:form commandName="goal">
    <form:errors path="*" cssClass="errorblock" element="div" />
    <table>
        <tr>
            <td><spring:message code="goal.minutes"/></td>
            <td><form:input path="minutes"/></td>
            <td><form:errors path="minutes" cssClass="error"/></td>
        </tr>
        <tr>
            <td colspan="3">
                <input type="submit" value="Enter Goal Minutes"/>
            </td>
        </tr>
    </table>
</form:form>
</body>
</html>

這是頁面視圖:

在此處輸入圖片說明

和適當的結果:

在此處輸入圖片說明

控制台中的代碼段

Result has errors: false
Minutes updated: -5

對於否定輸入,它應該顯示錯誤消息,並停留在同一頁面而不是第二屏幕截圖。

我不知道造成這種麻煩的原因。

有什么建議嗎?

解決方案已清理webapps文件夾。

我刪除了已部署的舊Web應用程序。 現在工作正常

在此處輸入圖片說明

它對我當前的應用程序有一些奇怪的影響。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM