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

如何修复表单验证,当它不起作用时

孔飞翔
2023-03-14

这里是我的pom.xml

<?xml version="1.0" encoding="UTF-8"?>

4.0.0 org.springframework.Boot spring-boot-starter-parent 2.3.2.release com.king Gestpeacesecurity 0.0.1-snapshot Gestpeacesecurity用于Spring Boot的和平安全项目

<properties>
    <java.version>1.8</java.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
    <dependency>
      <groupId>org.thymeleaf</groupId>
      <artifactId>thymeleaf</artifactId>
      <version>3.0.11.RELEASE</version>
    </dependency>
    
    <dependency>
      <groupId>org.thymeleaf</groupId>
      <artifactId>thymeleaf-spring4</artifactId>
      <version>3.0.11.RELEASE</version>
    </dependency>

    <dependency>
      <groupId>nz.net.ultraq.thymeleaf</groupId>
      <artifactId>thymeleaf-layout-dialect</artifactId>
      <version>2.4.1</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <!-- <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-test</artifactId>
        <scope>test</scope>
    </dependency> -->
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

我的实体代理,我使用lomback作为getter和setter

package com.king.Entities;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

import org.springframework.format.annotation.DateTimeFormat;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Entity
@Data @NoArgsConstructor @AllArgsConstructor
public class Agent implements Serializable {
    @Id 
    @NotNull
    @Size(min=5,max=5)
    private  String matricule;
    @NotNull
    @Size(min=4,max=15)
    private String nom;
    private String prenom;
    private String postnom;
    private String fonction;
    private String typeagent;
    private String niveaetude;
    private String contact1;
    private String contact2;
    private String sexe;
    private String adresse1;
    private String adresse2;
    private String photo;
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date dateNaiss;
    private String lieuNais;
    private String status;
}
@RequestMapping(value="/showFormAgent", method = RequestMethod.GET)
public String showFormAgent(Model model) {
    model.addAttribute("agent", new Agent());
    return "peacedrh/formAgent";
}

@RequestMapping(value="addAgent", method = RequestMethod.POST)
public String addAgent(@RequestParam(name="picture")MultipartFile file, Model model, String matricule, @Valid Agent A, BindingResult result) {
    
    
    try {
        if (!(file.isEmpty())) {
            A.setPhoto(file.getOriginalFilename());
        }
        agentDao.AddAgent(matricule, A);
        
        if (!(file.isEmpty())) {
            A.setPhoto(file.getOriginalFilename());
            file.transferTo(new File (imageDir+A.getMatricule()));
            
        }
        
    } catch (Exception e) {
        // TODO: handle exception
        model.addAttribute("error", e);
        return  "redirect:/showFormAgent?matricule="+matricule+"&error="+e.getMessage();        
    }
    model.addAttribute("agent", agentDao.getBymatricule(matricule));
    return "peacedrh/Accuse";
    
}

这是我的html页面(thymeleaf)

<form role="form"  method="post" th:action="@{addAgent}" th:object="${agent}" enctype="multipart/form-data">
                      <div class="card-body">
                      <div class="form-group">
                                        <label for="exampleInputEmail1">Matricule</label>
                                        <input type="text" th:field="*{matricule}" class="form-control" id="exampleInputEmail1" placeholder="Enter Matricule"/>
                                        <span class="text-danger" th:errors="*{matricule}">  </span>
                                    </div>
                        <div class="row">
                            <div class="col-md-6">
                                    <div class="form-group">
                                        <label for="exampleInputEmail1">Nom</label>
                                        <input type="text" th:field="*{nom}" class="form-control" id="exampleInputEmail1" placeholder="Enter Nom"/>
                                        <span class="text-danger" th:errors="*{matricule}">  </span>
                                        
                                    </div>
                                    <div class="form-group">
                                        <label for="exampleInputPassword1">Post nom</label>
                                        <input type="text" th:field="*{postnom}"  class="form-control" id="exampleInputPassword1" placeholder="Post nom"/>
                                    </div>
                                    <div class="form-group">
                                        <label for="exampleInputPassword1">Prenom</label>
                                        <input type="text" th:field="*{prenom}"  class="form-control" id="exampleInputPassword1" placeholder="Prenom"/>
                                    </div>
                                    <div class="form-group">
                                        <label for="exampleInputPassword1">Sexe</label>
                                        <select th:field="*{sexe}">
                                            <option value="M">M</option> 
                                            <option value="F">F</option>
                                        </select>
                                    </div>
                                    <div class="input-group mb-3">

                                    <div class="form-group">
                                        <label for="exampleInputPassword1">Statut Sociale</label>
                                        <select th:field="*{status}">
                                            <option value="Single">Single</option> 
                                            <option value="Maried">Maried</option>
                                            <option value="Veuve">Veuve</option>
                                            <option value="Veuf">Veuf </option>
                                            <option value="Divorce">Divorce</option>
                                            <option value="separe">Separe(é)</option>
                                            
                                        </select>
                                    </div>
                                       <div class="form-group">
                                        <label for="exampleInputPassword1">Lieu de naissance</label>
                                        <input type="text" th:field="*{lieuNais}"  class="form-control" id="exampleInputPassword1" placeholder="Lieu de naissance"/>
                                    </div>
                                      <div class="form-group">
                                        <label for="exampleInputPassword1">Date de naissance</label>
                                        <input type="date"  th:field="*{dateNaiss}"  class="form-control"/>
                                  </div>
                                  <div class="form-group">
                                     <label for="exampleInputPassword1">Niveau Etudet</label>
                                     <input type="text" th:field="*{niveaetude}"  class="form-control" id="exampleInputPassword1" placeholder="Niveau d'étude"/>
                                </div>
                                <div class="form-group">
                                      <label for="exampleInputPassword1">Type Agent</label>
                                      <select th:field="*{typeagent}">
                                            <option value="Admin">Admnistratif</option> 
                                            <option value="Terrain">Terrain</option>
                                       </select>
                                 </div>
                               </div>
                           </div>
                                  
                        
                            <div class="col-md-6">
                                
                                 <div class="form-group">
                                    <label for="exampleInputPassword1">Fonction</label>
                                     <select th:field="*{fonction}">
                                            <option value="Comptable">Comptable</option> 
                                            <option value="DRH">Direc Res Hum</option>
                                       </select>
                                 </div>
                                 <div class="form-group">
                                      <label for="exampleInputPassword1">Contact 1</label>
                                      <input type="text" th:field="*{contact1}"  class="form-control" id="exampleInputPassword1" placeholder="Contat 1"/>
                                 </div>
                                 <div class="form-group">
                                      <label for="exampleInputPassword1">Contact 2</label>
                                      <input type="text" th:field="*{contact2}"  class="form-control" id="exampleInputPassword1" placeholder="Contact 2"/>
                                 </div>
                                 <div class="form-group">
                                    <label for="exampleInputFile">File input</label>
                                 <div class="input-group">
                                 <div class="custom-file">
                                    <input type="file"  name="picture"  class="custom-file-input" id="exampleInputFile"/>
                                    <label class="custom-file-label" for="exampleInputFile">Choose file</label>
                                  </div>
                                </div> 
                                </div>
                                <div class="form-group">
                                    <label for="exampleInputPassword1">Adresse 1</label>
                                    <textarea  th:field="*{adresse1}"  class="form-control" rows="5" cols="5"></textarea>
                             </div>
                             <div class="form-group">
                                    <label for="exampleInputPassword1">Adresse 2</label>
                                    <textarea  th:field="*{adresse2}"  class="form-control" rows="5" cols="5"></textarea>
                             </div>
                            </div>
                            
                        </div>
                        <div class="card-footer">
                            <div class="row col-md-5 ml-20" >
                                <div class="col-md-6"><button type="submit" class="btn btn-primary">Submit</button></div>
                                <div class="col-md-6"><button type="reset" class="btn btn-primary">Cancel</button></div>
                            </div>
                         </div>
                      </form>

添加工作进行得很好,但表单验证仍不起作用

共有1个答案

微生毅
2023-03-14

您必须添加@RequestBody,因为您要从视图请求表单:

@Valid Agent A

变成

   @Valid @RequestBody Agent A

否则,您可以将代理对象作为showFormAgent上的@ModelAttribute传递

public String showFormAgent(@ModelAttribute Agent A) {
    return "peacedrh/formAgent";
}
@RequestMapping(value="addAgent", method = RequestMethod.POST)
public String addAgent(@ModelAttribute @Valid Agent A, BindingResult result) { //doSomething }
if (result.hasErrors()) {
   return "previus_form";
} else {
   return "success";
}
 类似资料:
  • 我正在按照本指南使用Spring表单验证,但我无法在自己的程序中验证表单。我完全按照指南中的描述去做,但在我的应用程序中却不起作用。 我使用Spring Tools Suite并下载了示例应用程序,以查看它是否真的可以工作。我看不出究竟是什么原因导致表单验证发生在示例应用程序中而不是我的应用程序中。我试图通过从POM中移除依赖项来缓慢地更改示例应用程序,以使其中断,但它继续工作.....到底是哪个

  • 这是我的logcat com.contoh.jalikk.tumbal.search.adapter.NotifyDataSetChanged()'在com.contoh.jalikk.tumbal.semuadata$1的空对象引用上。onresponse(semuadata.java:178)在com.contoh.jalikk.tumbal.semuadata$1的onresponse(se

  • 嗨,我想用提交按钮验证输入类型=电子邮件字段。我在页面中有两个表单元素。我正在打开一个div(divForgotPassword)作为模式。但是必需的属性在模态内部不起作用。下面是我的代码 //一些元素

  • 我正在实现一个带有表单验证的示例Spring MVC表单。我有一个复杂类型作为表单bean的bean属性。并且我为bean属性添加了表单验证。但在UI中并没有体现出同样的情况。但是表单验证也适用于表单bean的其他基元类型。 因此,验证对于表单bean非常有效,但对于嵌套的复杂类型(如表单bean中的)则不适用。 我正在试着了解原因和解决办法。 Spring版本4.0+。Hibernate验证器A

  • 我想测试用户是否在模式 ##-#- 中输入了任何字符或数字#### 我的表达式是 ^(\w){4}-(\w){2}-(\w){3}-(\w){4}$,似乎在联机测试人员中有效,但在我的验证表达式中不起作用! 有什么想法吗? 这是我的代码(getComponentValye是我自己获取值的函数)…

  • 问题内容: 我正在尝试仅在成功验证后提交表格。验证适用于必填项,但不适用于ng-minlength 表单输入无效,但仍在提交表单。 http://jsfiddle.net/pMMke/9/ 我究竟做错了什么。 我不想使用提交按钮禁用方法。 问题答案: 这是您做错的事情:您正在混合使用两个概念Angular验证器 和 HTML5验证器。 在 需要 HTML5验证,例如,规定: 如果存在,它指定提交表