【发布时间】:2016-01-25 09:49:53
【问题描述】:
是否可以在一处监控 Wicket 中的所有表单/表单组件验证错误?有某种形式的听众吗?我想要页面、组件和错误消息。
感谢任何帮助
【问题讨论】:
-
你能说得更具体点吗?你在使用嵌套形式的东西吗?
-
@Soora 你在问我的表单是否是我页面中的嵌套类吗?
标签: forms validation wicket
是否可以在一处监控 Wicket 中的所有表单/表单组件验证错误?有某种形式的听众吗?我想要页面、组件和错误消息。
感谢任何帮助
【问题讨论】:
标签: forms validation wicket
你的问题很笼统。你想要达到什么目的?您是否正在寻找一些“管理员”功能来检查 Checked/RunTime 异常或任何类型的错误,包括简单的必填字段验证错误?
无论如何,您可以将错误消息保存到会话中,并让“管理”页面以某种表格形式显示所有报告的错误消息。但这些不可能是实时的,因为用户可能已经更正了该值。
您还可以创建自己的 ExceptionPage/Error Page 并捕获不同类型的运行时错误在 RequestCycle 级别进行捕获,然后在某处显示。
从设计的角度来看,每个页面/组件更容易将错误消息推送到会话存储中,然后使用 Session.get().getFeedbackMessages().iterator( ) 进行迭代。迭代时,您可以利用 FeedbackMessge 的布尔方法,如 isError()、isInfo() 等,用于 GUI 上的各种显示格式。
这里是来自 Wicket 的更多信息(查找 Overriding All Error Pages for RuntimeException 部分以获取与会话相关的 sn-p): https://cwiki.apache.org/confluence/display/WICKET/Error+Pages+and+Feedback+Messages
【讨论】:
您可以在自定义IRequestCycleListener#onDetach() 中使用FeedbackCollector#collect()。这将返回您所有FeedbackMessages,而不是ValidationErrors,但它应该可以完成这项工作。如果反馈消息是从Component#error() 报告的,那么您可以通过#getReporter() 与它联系。
【讨论】: