我需要根据我们的数据库验证一个字段,以验证唯一性。我似乎遇到的问题是,验证器doValidation()在我们收到数据库的回复之前就退出了。
我怎么能让验证器等到我们收到DB的消息后才返回它的有效负载呢?
或者更好的问题可能是(因为我认为第一个问题是不可能的),我如何才能以不同的方式设置它,这样我就不需要等待,或者等待不会导致验证自动返回valid?
发布于 2010-10-27 23:27:19
大多数情况下,我所做的似乎是有效的。我不喜欢它,但它至少对远程源执行了验证。
然后,我所做的是使用一个'keyUp‘事件处理程序来分离数据库查找部分。同时,我设置了一个字符串变量来充当某种Flag,它将被标记为“正在处理”。当response事件触发时,我将检查其内容,并清除标志,或将其设置为某种其他类型的错误。
然后,我创建了一个新的'EmptyStringValidator‘将检查这个标志的内容,并相应地做它的工作。
它是间接的,但到目前为止,似乎是有效的。
发布于 2010-10-21 01:49:23
如果您使用的是远程对象,则可以在远程声明中指定方法调用,并为结果调用分配一个函数。结果调用只在远程服务器返回某些内容时运行,因此它不会在验证之前运行。
在所说的结果函数调用中进行验证调用(您必须创建它),这样就可以了。你的代码应该是这样的:
<s:RemoteObject id="employeeService"
destination="ColdFusion"
source="f4iaw100.remoteData.employeeData"
endpoint="http://adobetes.com/flex2gateway/"
result="employeeService_resultHandler(event)"/>
**<s:method name="dataCheckCall" result="dataCheckResult(event)"/>**
<s:RemoteObject />在你的脚本中:
function protected dataCheckResult(event:ResultEvent):void {
**doValidate();**
}编辑:只要你调用"dataCheckCall“,方法就会开始运行。无论出于何种原因,如果您想要在验证器中调用它,您可以这样做,然后dataCheckResult将在返回其有效负载时运行(假设doValidate在其他地方被调用)。我也在下面留言了。
发布于 2010-10-21 19:31:58
您正在尝试将一个异步流程(从DB获取数据)放入一个同步流程(依次检查所有验证器)。
这行不通..。
您需要使用自己的验证器框架,或者使用不同的方法来确定控件的合法性。
另外,MX验证器是垃圾!
https://stackoverflow.com/questions/3979592
复制相似问题