9

こんにちは、私は春のフレームワークが初めてです。春の検証APIを使用して入力フィールドを検証しようとした小さな例を実行しました。これがコードです

@RequestMapping(value = "/applicationFormSubmit", method = RequestMethod.POST)
    public String insertdata( @ModelAttribute("applicationForm") @Valid ApplicationFormBean applicationFormBean, @RequestParam("file") MultipartFile file, BindingResult result,Model model)
{
    if(result.hasErrors())
    {

        return "applicationForm";           
    }
      try {
            Blob blob = Hibernate.createBlob(file.getInputStream());

          //  applicationFormBean..setFilename(file.getOriginalFilename());
            applicationFormBean.setSignature(blob);
          //  applicationFormBean.setContentType(file.getContentType());
        } catch (IOException e) {
            e.printStackTrace();
        }
    applicationFormUserService.insertApplicationData(applicationFormBean);

    return "applicationForm";       

}

しかし、空白の値で from を送信すると、次のエラーが表示されます

Field error in object 'applicationForm' on field 'applicantName': rejected value []; codes [NotEmpty.applicationForm.applicantName,NotEmpty.applicantName,NotEmpty.java.lang.String,NotEmpty]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [applicationForm.applicantName,applicantName]; arguments []; default message [applicantName]]; default message [Please enter your nnnn.]

Field error in object 'applicationForm' on field 'applicantName': rejected value []; codes [Size.applicationForm.applicantName,Size.applicantName,Size.java.lang.String,Size]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [applicationForm.applicantName,applicantName]; arguments []; default message [applicantName],20,2]; default message [this is worng ]
4

2 に答える 2

18

以下に示すコードの行を変更してください。

public String insertdata(
    @ModelAttribute("applicationForm") @Valid ApplicationFormBean applicationFormBean,
    BindingResult result,
    Model model,
    @RequestParam("file") MultipartFile file)

このSpring MVCチュートリアルで述べたように:

BindingResult は、検証されるモデル オブジェクトの直後に来る必要があります。そうしないと、Spring はオブジェクトの検証に失敗し、例外をスローします。

このチュートリアルでは、この問題についても言及しています。

于 2014-07-18T06:13:12.363 に答える
1

@ASADUL に関しては、メソッドの署名の順序を変更することでも問題を解決しました。

私の場合、エラーの原因のHttpServletRequest request隣にありました。@ModelAttribute(FORM_MODEL_KEY) @Valid MemberForm memberForm

@PostMapping(URLS.MEMBER_PROCESSING)
    public String processMemberForm(@ModelAttribute(FORM_MODEL_KEY) @Valid MemberForm memberForm, HttpServletRequest request, BindingResult bindingResult, RedirectAttributes redirectAttributes) {

に変更しました

@PostMapping(URLS.MEMBER_PROCESSING)
    public String processMemberForm(@ModelAttribute(FORM_MODEL_KEY) @Valid MemberForm memberForm, BindingResult bindingResult, HttpServletRequest request, RedirectAttributes redirectAttributes) {

HttpServletRequest request次を後に置くBindingResult bindingResult必要@ModelAttribute(FORM_MODEL_KEY) @Valid MemberForm memberForm, BindingResult bindingResultがあり、この順序でなければならないことに注意してください。

于 2021-08-13T09:01:19.347 に答える