【问题标题】:Why is onSubmit is not called in my code?为什么我的代码中没有调用 onSubmit?
【发布时间】:2020-07-08 12:16:06
【问题描述】:

onSubmit() 不在网页中调用。

我已经用super.onSubmit() 试过了,我试过用一个按钮来实现它。

而且我确定它没有被调用,因为它试图在 onSubmit - 方法的代码中系统输出一些 Strings。

这是代码:

Form form = new Form("setPersonalDataForm") {

        @Override
        public void onSubmit() {
              System.out.println("If you read this its called");
            String setPersonalDataEndpoint = new PropertyLoader().getPropValues("setPersonalData", "api.properties");

            JSONObject setPersonalDataJson = new JSONObject();

            Object uasAccountId = uasAccountIdTextField.getDefaultModelObject();
            Object firstname = firstnameTextField.getDefaultModelObject();
            Object middlename = middlenameTextField.getDefaultModelObject();
            Object surname = surnameTextField.getDefaultModelObject();
            Object companyline1 = companyLine1TextField.getDefaultModelObject();
            Object companyline2 = companyLine2TextField.getDefaultModelObject();

            String dateToConvert = birthdateTextField.getDefaultModelObject().toString();

            DateConverter dateConverter = (date) -> {

                DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEE MMM d H:mm:ss zzz yyyy", Locale.ENGLISH);
                ZonedDateTime parsedDate = ZonedDateTime.parse(dateToConvert, formatter);
                DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
                Object birthdate = parsedDate.format(formatter2);

                return birthdate.toString();
            };

            Object birthdate = dateConverter.convertDate(dateToConvert);

            setPersonalDataJson.put("brand", selectedBrand);
            setPersonalDataJson.put("uasAccountId", uasAccountId);
            setPersonalDataJson.put("salutation", selectedSalutation);
            setPersonalDataJson.put("gender", selectedGender);
            setPersonalDataJson.put("firstname", firstname);
            setPersonalDataJson.put("middlename", middlename);
            setPersonalDataJson.put("surname", surname);
            setPersonalDataJson.put("companyLine1", companyline1);
            setPersonalDataJson.put("companyLine2", companyline2);
            setPersonalDataJson.put("birthday", birthdate);


            PageParameters setPersonalDataParameters = new PageParameters();

            try {

                ResponseEntity response = new TestService().postTestJson(setPersonalDataJson, setPersonalDataEndpoint);

                String responseBody = response.getBody().toString();

                JSONObject responseJsonObject = new JSONObject(responseBody);

                String testSuccessfull = responseJsonObject.get("status").toString();
                String message = responseJsonObject.get("message").toString();

                setPersonalDataParameters.add("testSuccessfull", testSuccessfull);
                setPersonalDataParameters.add("message", message);
                setPersonalDataParameters.add("requestJson", setPersonalDataJson.toString());
                setResponsePage(ResponsePage.class, setPersonalDataParameters);

            } catch (Exception e) {

                setPersonalDataParameters.add("testSuccessfull", "failed");
                setPersonalDataParameters.add("requestJson", setPersonalDataJson.toString());
            }
            setResponsePage(ResponsePage.class, setPersonalDataParameters);
        }
    };

有谁知道为什么不调用它以及如何解决这个问题? 提前致谢!

【问题讨论】:

  • 很确定,因为 printl 不是函数...

标签: java wicket


【解决方案1】:

如果onSubmit() 没有被调用,那么很可能onError() 被调用了!

我的 Apache Wicket 培训的“最佳实践”幻灯片中的一项内容是:始终覆盖 onError()onSubmit()!大多数情况下,您会希望在其主体中重新渲染一个 FeedbackPanel。但即使将某些内容打印到 stderr 也会为您省去很多麻烦!

【讨论】:

  • 非常感谢!你能向我解释为什么 onSubmit 不是调用而是 onError 吗?或者你能给我一个链接吗?
  • @XaNaX420 这在官方 Wicket 文档中有很好的描述:ci.apache.org/projects/wicket/guide/8.x/…
猜你喜欢
  • 2013-10-11
  • 2019-03-09
  • 1970-01-01
  • 2020-06-08
  • 1970-01-01
  • 2014-05-17
  • 1970-01-01
  • 2021-03-23
  • 1970-01-01
相关资源
最近更新 更多