我正试图找到一种在WebObjects应用程序中进行字段验证的好方法。如果我有一个文本字段,并将一个数字格式化程序绑定到它上,那么默认的行为似乎是在用户输入一个有效的数字时解析出这个数字,或者,如果用户输入了一个无效的数字,它似乎只是忽略了用户输入的值。我无法在保存方法或操作方法中进行验证,因为WO在到达action方法时已经忽略了非数字输入。在WebObjects应用程序中,是否有一种标准/推荐的方式来验证用户输入,这样用户就可以被警告无效输入,而不仅仅是忽略无效输入?
这个页面:EOF/Validation声称WO和EOF有“令人难以置信的一系列验证机制”,甚至暗示有一种内置的方式来防止用户输入不适当的数据,但是我还没有找到任何文档或如何这样做的例子(如果有内置的方式的话)。想出一个定制的javascript验证器来防止不适当的数据似乎是一场噩梦--找到一种方法让JS识别和处理后端格式化程序/解析器处理的所有相同的边缘情况。如果WO真的有一种内置的方式将格式化程序边缘案例传播到JS验证,那就太好了。
上面的链接还说,在validationFailedWithException中有一个WOComponent方法,它被称为“当EO或格式化程序在分配过程中失败验证时”,但是在上面的非数字示例情况下,如何使格式化程序失败验证呢?如果输入了一个非数字,我尝试让格式化程序在解析方法中抛出一个异常,但是该异常不会传递给validationFailedWithException方法。有人知道我如何在格式化程序中触发将触发对validationFailedWithException()的调用的异常吗?这甚至是最好的/推荐的方式吗?有谁知道更好的方法吗?
发布于 2012-06-26 11:00:19
我很确定,每次格式化错误都会调用validationFailedWithException。您应该在那里收到一个包装了一个NSValidationException的ParseException。通常在包含绑定的组件上调用该方法。它可能在插入符号(^)绑定时被跳过。
所有标准数字格式化程序都已经抛出一个ParseException (参见Format.parse(String))。
WebObjects中的验证处理可能会变得相当复杂,这取决于您的需要。但是它的设计没有考虑到JavaScript或Ajax。Wonder中较新的方法可能包含客户端,但我没有使用它的经验。
正常的验证顺序是:
当此序列中发生故障时,调用validationFailedWithException。
同时保存企业对象“validateFor.”在对象上调用。此时必须在操作方法中捕获异常。
因此,您有两点需要处理验证错误。“语法”错误必须在validationFailedWithException中处理。在此之后,您就有了有效的输入。您可以在操作方法或validateFor中进一步手动检查这些或更大的对象结构。(如validateForSave)。
https://stackoverflow.com/questions/11198265
复制相似问题