Validation WebObjects字段验证

Validation WebObjects字段验证,validation,webobjects,Validation,Webobjects,我正试图找到一种在WebObjects应用程序中进行字段验证的好方法。如果我有一个文本字段,并将一个数字格式化程序绑定到该字段,则默认行为似乎是在用户输入有效数字时解析出该数字,或者,如果用户输入无效数字,则似乎只是忽略用户输入的值。我不能在save方法或action方法中进行验证,因为当它到达action方法时,WO已经忽略了非数字输入。在WebObjects应用程序中,是否有一种标准/推荐的方法来验证用户输入,从而可以提醒用户输入无效,而不仅仅是忽略无效输入 本页:声称WO和EOF拥有“一系

我正试图找到一种在WebObjects应用程序中进行字段验证的好方法。如果我有一个文本字段,并将一个数字格式化程序绑定到该字段,则默认行为似乎是在用户输入有效数字时解析出该数字,或者,如果用户输入无效数字,则似乎只是忽略用户输入的值。我不能在save方法或action方法中进行验证,因为当它到达action方法时,WO已经忽略了非数字输入。在WebObjects应用程序中,是否有一种标准/推荐的方法来验证用户输入,从而可以提醒用户输入无效,而不仅仅是忽略无效输入

本页:声称WO和EOF拥有“一系列令人难以置信的验证机制”,甚至暗示有一种内置的方法来防止用户输入不适当的数据,但我还没有找到任何文档或示例说明如何做到这一点(如果事实上有内置的方法)。想出一个自定义javascript验证器来防止不适当的数据似乎是一场噩梦——找到一种方法让JS识别并处理后端格式化程序/解析器处理的所有相同的边缘情况。如果WO真的有一种内置的方式将格式化程序边缘案例传播到JS验证,那就太好了


上面的链接还说,在WOComponent中有一个validationFailedWithException方法,“当EO或格式化程序在分配过程中验证失败时”会调用该方法,但是在上面的非数字示例案例中,如何使格式化程序验证失败?我尝试过让格式化程序在输入非数字时在parse方法中引发异常,但该异常不会传递给validationFailedWithException方法。有人知道如何在格式化程序中触发异常,从而触发对validationFailedWithException()的调用吗?这是最好的/推荐的方式吗?有人知道更好的方法吗?

我很确定,每次格式错误都会调用validationFailedWithException。您应该在那里收到一个NSValidationException,它包装了一个ParseException。该方法通常在包含绑定的组件上调用。在插入符号(^)绑定上可能会跳过它

所有标准数字格式化程序都已抛出ParseException(请参阅Format.parse(String))

WebObjects中的验证处理可能会变得相当复杂,这取决于您的需要。但它的设计没有考虑JavaScript或Ajax。Wonder中的新方法可能包含客户端,但我没有这方面的经验

正常验证顺序为:

  • 如果需要,使用格式化程序将输入转换为目标类型
  • 在目标对象上调用validateAttributeName方法,其中AttributeName是接收值的属性名称
当此序列中出现故障时,将调用validationFailedWithException

保存企业对象时,对对象调用“validateFor…”。此时必须在操作方法中捕获异常


因此,有两点需要处理验证错误。必须在validationFailedWithException中处理“语法”错误。在这一点之后,您就有了有效的输入。您可以在action方法或validateFor中手动进一步检查这些或更大的对象结构。。。(例如validateForSave)。

感谢您的回复。我的代码中有几个错误:这是我最后一次回答的其余部分。。。错误:(1)相关的格式方法是parseObject(…),而不是parse(…),(2)我没有意识到异常必须是ParseException,(3)我工作的公司为WOTextField制作了一个包装器组件,我们将其配置为始终用于代替WOTextField和ERXWOTextField。这就是在validationFailedWithException()中接收ParseException的组件,因此我需要更改该组件以将异常传递给父组件的validation…()方法。希望这能帮助别人。