Проверка класса сущности содержит подкласс весной MVC - PullRequest
0 голосов
/ 04 июня 2019

пожалуйста, помогите мне. Я работаю проверить форму. Поля ученика класса, такие как «имя», «адрес», «электронная почта», отображают сообщение, когда я нажимаю кнопку «Отправить», но моя проблема состоит в том, что поля, в которых ученик класса содержит отношения, поскольку основной класс не является отображаемым сообщением. Я попытался поместить аннотации @Valid, и я получил тот же результат.

Я получаю сообщение об ошибке: Не удалось преобразовать значение свойства типа java.lang.String в требуемый тип com.springmvc.entities.Major для свойства major; вложенное исключение - java.lang.IllegalStateException: невозможно преобразовать значение типа java.lang.String в требуемый тип com.springmvc.entities.Major для основного свойства: не найдено соответствующих редакторов или стратегии преобразования.

Может ли кто-нибудь помочь мне или дать мне решения? Я так благодарен!

Я искренне извиняюсь, если мой английский не хорош

@Entity(name="student")
public class Student{

  @Id
  @GeneratedValue(strategy=GenerationType.IDENTITY)
  int id;

  @NotNull(message="Your name must not null !")
  String name;

  @NotNull(message="Your address must not null !")
  String address;

  @NotNull(message="Your email must not null !")
  String email;

  @NotNull(message="Select a major !")
  @Valid
  @OneToOne(fetch=FetchType.EAGER)
  @JoinColumn(name="idMajor")
  private Major major;

  //getter - setter ...
}



@Entity(name="major")
public Class Major{

  @Id
  @GeneratedValue(strategy=GenerationType.IDENTITY)
  int idMajor;
  String major;

  //getter - setter ...
}


//My controller

@Controller
public class StudentController{

  @Autowired
  StudentService studentService;

  @InitBinder
  public void InitBinder(WebDataBinder binder){
     StringTrimmerEditor stringTrimmerEditor = new StringTrimmerEditor(true);
     binder.registerCustomEditor(String.class, stringTrimmerEditor);
  }



    @ModelAttribute("studentForm")
      public Student studentForm()
        {
           return new Student();
        }

  @RequestMapping(value="/saveStudent",method= RequestMethod.POST)
  public String SaveStudent(@Valid @ModelAttribute("studentForm") Student 
  student,BindingResult bindingResult, ModelMap model) {

    if (bindingResult.hasErrors())
    {
        return "page-student";
    }
    else {
        model.addAttribute("msg", "Save success!");
                studentService.SaveStudent(student);
        return "page-student;
    }
   }

}


//My View (page-student.jsp) 

 <form:form action="saveStudent" enctype="multipart/form-data" method="post" 
 modelAttribute="studentForm" >

    <p>Name:<form:input path="name"/></p>
    <form:errors path="name" cssClass="error" /> // Validate ok !

    <p>Address:<form:input path="address"/></p>
    <form:errors path="address" cssClass="error" /> // Validate ok !

    <p>Email:<form:input path="email"/></p>
    <form:errors path="email" cssClass="error" /> // Validate ok !

    <p>Major:<form:select  path="major">                                     
    <form:option value="0">-- Select --</form:option>

      <c:forEach var="major" items="${major}">
         <form:option value="${major.getIdMajor()}">
             ${major.getMajor()} 
          </form:option>                                     
       </c:forEach>

    </form:select></p>
   <form:errors path="major" cssClass="error" />
  // I get an errors as I  mentioned in my description above.

    <form:button type="submit" >Submit</form:button>
</form:form>
...