【问题标题】:spring mvc I do not see the error message in jspspring mvc我在jsp中看不到错误信息
【发布时间】:2014-09-09 10:26:43
【问题描述】:

这是表单对象: 这里我放了java注解来验证表单对象,使得name字段的长度至少为1。 这是一个小代码sn-p:

import javax.validation.constraints.Size;   

public class Persona {
       @NotNull
       @Size(min=1)
       private String nome;
       private String cognome;
       private String dataNascita;
       private String sesso;
       private String cittaNascita;
       private String cittaResidenza;
       private String nazione;
       private String codiceFiscale;
       private String indirizzo;
       private String telefonoCellulare;
       private String telefonoFisso;
        private String email;

    public String getNome() {
        return nome;
    }
    public void setNome(String nome) {import javax.validation.constraints.Size;



public class Persona {
       @NotNull
       @Size(min=1)
       private String nome;
       private String cognome;
       private String dataNascita;
       private String sesso;
       private String cittaNascita;
       private String cittaResidenza;
       private String nazione;
       private String codiceFiscale;
       private String indirizzo;
       private String telefonoCellulare;
       private String telefonoFisso;
        private String email;

    public String getNome() {
        return nome;
    }
    public void setNome(String nome) {
        this.nome = nome;
    }
        this.nome = nome;
    }

persona.jsp 表单:

<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<html>
<head>
    <title>Spring MVC Form Handling</title>
</head>
<body>

<h2>Informazioni Persona</h2>
<form:form method="POST" action="/Esercizio1SpringMVC/addPersona">
   <table>
    <tr>
        <form:errors path="*" />
        <td><form:label path="nome">Nome</form:label></td>
        <td><form:input path="nome" /></td>
        <form:errors path="nome"  />
    </tr>

检查到达 risultato.jsp,但即使我为表单字段的名称输入任何文本,控制器 result.hasErrors() 也会返回 false

package com.springMVC;

import javax.validation.Valid;

import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.ui.ModelMap;




@Controller
public class PersonaController {

   @RequestMapping(value = "/", method = RequestMethod.GET)
   public ModelAndView persona() {
      return new ModelAndView("persona", "command", new Persona());
   }

   @RequestMapping(value = "/addPersona", method = RequestMethod.POST)
   public String addPersona( @ModelAttribute("SpringWeb") @Valid Persona persona, BindingResult result, 
   ModelMap model) {

       if(result.hasErrors()) {
           System.out.println("bbb");
           model.addAttribute("Persona", persona);
           return "person";
       } 
        System.out.println("ccc");
      model.addAttribute("nome", persona.getNome());
      model.addAttribute("cognome", persona.getCognome());
      model.addAttribute("dataNascita", persona.getDataNascita());
      model.addAttribute("sesso", persona.getSesso());
      model.addAttribute("cittaNascita", persona.getCittaNascita());
      model.addAttribute("cittaResidenza", persona.getCittaResidenza());
      model.addAttribute("nazione", persona.getNazione());
      model.addAttribute("codiceFiscale", persona.getCodiceFiscale());
      model.addAttribute("indirizzo", persona.getIndirizzo());
      model.addAttribute("telefonoCellulare", persona.getTelefonoCellulare());
      model.addAttribute("telefonoFisso", persona.getTelefonoFisso());
      model.addAttribute("email", persona.getEmail());

      return "risultato";
   }
}



<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<html>
<head>
    <title>Spring MVC Form Handling</title>
</head>
<body>

<h2>Informazioni Persona</h2>
   <table>
    <tr>
        <td>Nome</td>
        <td>${nome}</td>
    </tr>
    <tr>
        <td>Cognome</td>
        <td>${cognome}</td>
    </tr>
    <tr>
        <td>Data di nascita</td>
        <td>${dataNascita}</td>
    </tr>
    <tr>
        <td>Sesso</td>
        <td>${sesso}</td>
    </tr>
    <tr>
        <td>Citta di nascita</td>
        <td>${cittaNascita}</td>
    </tr>
    <tr>
        <td>Citta di residenza</td>
        <td>${cittaResidenza}</td>
    </tr>
    <tr>
        <td>Nazione</td>
        <td>${nazione}</td>
    </tr>
    <tr>
        <td>Codice fiscale</td>
        <td>${codiceFiscale}</td>
    </tr>
    <tr>
        <td>Indirizzo</td>
        <td>${indirizzo}</td>
    </tr>
    <tr>
        <td>Telefono cellulare</td>
        <td>${telefonoCellulare}</td>
    </tr>
    <tr>
        <td>Telefono fisso</td>
        <td>${telefonoFisso}</td>
    </tr>
    <tr>
        <td>Email</td>
        <td>${email}</td>
    </tr>
</table>  
</body>
</html>

【问题讨论】:

  • @Adrian Thompson Phillips
  • 你的意思是我发布了jsp但我还没有解决问题@Mufanu
  • 是的,我发布了 jsp,但我没有解决问题
  • 如果我理解正确的话,你把表单中的nome字段留空,你的控制器方法被调用,result.hasErrors()仍然是假的?如果这一切都是真的,你的项目中是否有验证器(如HibernateValidator)?
  • 是的。我已经包含在项目 hibernate-validator-4.3.0.Final.jar 和 javax.validatio-1.0.0.GA.jar 中。但是不要使用任何 Java 类作为验证器,使用控制器和我发布代码的 bean 中的注释

标签: java jsp jakarta-ee spring-mvc


【解决方案1】:

您应该在控制器示例中使用@RequestParam;

@RequestMapping(value = "/addPersona", method = RequestMethod.POST) public String addPersona(HttpServletRequest 请求,HttpServletResponse 响应, Locale 语言环境,模型模型,

          @RequestParam( value = "name", required = false ) String name

) {

//在这里使用名字

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-05
    • 1970-01-01
    • 1970-01-01
    • 2018-06-26
    • 1970-01-01
    • 2012-01-21
    • 1970-01-01
    相关资源
    最近更新 更多