首页 > 解决方案 > 如何在 Wicket java 中为 Dropdownchoice 和 Checkbox 添加验证

问题描述

我在 html 页面中有一个复选框和下拉菜单。如果两者都被选中,点击提交时,它们应该是一条错误消息,其中任何一个都应该是必填字段,并要求至少选择一个值。

我创建了一个新类作为实现 IValidator 的 FormValidator 并覆盖了 validate 方法。但我不知道如何在提交方法调用广告中使用下拉选择值和复选框值如何在 html 中显示。

Java 代码 -

IModel<Project> dropdownModel =   new PropertyModel<Project>(criteria,"selectedBillableProject");
        DropDownChoice<Project> billableProjectsList = new DropDownChoice<>(
                "projectsList",
                dropdownModel,
                billableProjects,
                new ChoiceRenderer<Project>("fullNameWithCustomer"));
        billableProjectsList.setLabel(new ResourceModel("printMonth.billable"));
        
        form.add(billableProjectsList);

}

protected void onSubmit() {
           .....
            validateInputComponents(reportCriteria);
.....
}

public void validateInputComponents(ReportCriteria reportCriteria){

          add(new FormComponentValidator(reportCriteria.getSelectedBillableProject(), unbillableProjectsView.getModelObject()));      

        }

我已经更新了 FormComponentValidtor,类似于:https ://cwiki.apache.org/confluence/display/WICKET/Validating+related+fields

但它导致以下错误 onSubmit ()。11-26@22:37:25 错误 org.apache.wicket.request.cycle.RequestCycle - 处理错误消息时出错 java.lang.IllegalStateException: STREAM at org.eclipse.jetty.server.Response.getWriter(Response.java :693) 在 javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:152) 在 javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:152) 在 org.springframework.security.web.context.SaveContextOnUpdateOrErrorResponseWrapper.getWriter(SaveContextOnUpdateOrErrorResponseWrapper. java:125) 在 org.apache.wicket.protocol.http.servlet.ServletWebResponse.write(ServletWebResponse.java:109) 在 org.apache.wicket.protocol.http.HeaderBufferingWebResponse.write(HeaderBufferingWebResponse.java:179) 在 org .apache.wicket.protocol.http.BufferedWebResponse$WriteCharSequenceAction。

我错过了什么吗?请帮忙

标签: javahtmlcheckboxwicketdropdownchoice

解决方案


看起来您的表单中缺少一个 FeedbackPanel 来显示验证错误/消息。查看此处的用户指南并遵循整个示例:

https://ci.apache.org/projects/wicket/guide/8.x/single.html#_form_validation_and_feedback_messages


推荐阅读