当前位置: 首页 > 知识库问答 >
问题:

Wicket:验证DataTable组件内的嵌套表单

罗晨
2023-03-14

我开始认为在DataTable级别可能无法做到这一点,因为单元格的onPopulate()实际上只在AbstractDataGridView级别调用。是否有人知道在DataTable内部验证这些内部表单是否可行,如果可以,我如何实现这一点?

感谢您的时间和关注。

共有1个答案

薛弘厚
2023-03-14

我也有同样的问题,我解决它的方法是这样的:

Form<List<MyDataType>> form = new Form<List<MyDataType>>("form", getModel()) {
    @Override
    protected void onValidate() {
        super.onValidate();
        visitChildren(FormComponent.class, new IVisitor<FormComponent, Void>() {
            @Override
            public void component(FormComponent component, IVisit<Void> visit) {
                component.processInput();
                if (component.hasErrorMessage()) {
                    for (FeedbackMessage message :
                         component.getFeedbackMessages()) {
                        if (message.isError()) {
                            get(TABLE_ID).getFeedbackMessages().add(message);
                        }
                    }
                }
            }
        });
    }
};

所以基本上,当我验证表单时,我会手动检查内部formcomponent并检查它们。然后将错误消息转发到表,该表有自己的feedbackpanel

可能不是最优雅的解决方案,但它有效。

 类似资料:
  • 问题内容: 使用flask式的微框架,我很难构建一个RequestParser可以验证嵌套资源的。假设期望的JSON资源格式为: 中的每个项目都对应一个对象: …然后使用如下形式创建一个: …但是你将如何验证其中MyObject每个字典的嵌套?或者,这是错误的方法吗? 与此对应的API MyObject本质上将每个对象视为对象文字,并且可能有一个或多个传递给服务;因此,在这种情况下,拼合资源格式将

  • 我试图用redux-form用嵌套的优惠券代码/优惠券子表单制作结帐页面。 所以结账表单将包括,例如,国家选择,在这个表单中,我想添加一个子表单来应用优惠券。 用户需要能够在主结账表单中单独应用优惠券,以查看可能的折扣。 我明白我不能简单地嵌套ReduxForms。我不想创建2个单独的表单,因为我想在voucher字段下面显示可能的验证并提交常规结帐表单的错误。我可能可以对voucher字段使用a

  • 我使用的是OpenApi规范,这是生成类的代码示例: 我想禁止发送以下请求: 如果我使用了它看起来像: 有什么方法可以使用文件做同样的事情吗?

  • 问题内容: 如何跳过使用AngularJS验证嵌套表单的方法?即使子窗体无效,我也必须使其外部窗体有效。 在下面的示例中,外部格式应该有效(必须为true)。默认情况下不是。有选择吗? 代码(jsFiddle): 问题答案: 在Angular形式中可以嵌套。这意味着外部形式在所有子形式都有效时也有效。 因此,当内部变量之一无效时,无法使外部格式自动有效(通过键)。 尝试使用 演示版 从Angula

  • 我正在对嵌套的Json使用Avro模式使用Apache Nifi验证记录。我对JSON中的字段有特殊问题。 架构: Json数据: 无效消息: 此FlowFile中的记录无效,原因如下:;以下1个字段的值类型与架构不匹配:[/test_attributes/nested_field] 我不明白这个信息。我想象Json是有效的,因此处理器不应该使处理器失效。我错过了什么? 编辑:*删除了示例JSON

  • 我想把验证放在角度6中。它应该包含字母数字字符。字母或数字,仅3到9位。如果是数字,则应以1开头。 任何人都可以帮助我进行这些验证吗?