Validation 为什么有效(「整数」、「1,5」)=YES?
为什么Validation 为什么有效(「整数」、「1,5」)=YES?,validation,coldfusion,integer,coldfusion-9,Validation,Coldfusion,Integer,Coldfusion 9,为什么#是有效的(“整数”,“1,5”)#输出是?我希望它不会像#isValid(“integer”,“1.5”)#那样输出 我将用验证..Adobe知道这一点,但是 国家:关闭 状况:撤回 原因:按设计 TBH我有点不好意思使用一种甚至不能正确验证整数的语言 更新: 猜猜看,它将在CF12中被处理 毫无疑问,这种行为是不正确的。很明显 这是错误的,应该纠正。但一直是这样 而做出这样一个根本性的改变对我们来说是一个巨大的潜力 中断许多应用程序。我们不想在这个版本中这样做。 正如Rakshith
#是有效的(“整数”,“1,5”)#
输出是?我希望它不会像#isValid(“integer”,“1.5”)#
那样输出
我将用
验证..Adobe知道这一点,但是
国家:关闭
状况:撤回
原因:按设计
TBH我有点不好意思使用一种甚至不能正确验证整数的语言
更新:
猜猜看,它将在CF12中被处理
毫无疑问,这种行为是不正确的。很明显
这是错误的,应该纠正。但一直是这样
而做出这样一个根本性的改变对我们来说是一个巨大的潜力
中断许多应用程序。我们不想在这个版本中这样做。
正如Rakshith已经传达的,我们计划接受这些变化
在“炫目”中,我们将纠正行为,而无需担心
向后兼容性
如果您想绝对确保您有一个整数,可以使用Java Integer方法
<cfscript>
createObject("java","java.lang.Integer").parseInt("1,5");
</cfscript>
createObject(“java”,“java.lang.Integer”).parseInt(“1,5”);
parseInt()方法在给定任何不能解释为整数的内容时抛出。这包括
“1,5”
,只是在这里扩展答案并解释实际发生的情况
请参阅,其详细信息的摘要是,如果可能,CF将“m
,n
”(其中m
和n
是数字)解释为日期。这是可笑的:“m
,n
”不是一种向地球上任何人表示日期的格式,因此CF没有理由这样解释它
Adobe拒绝将此问题修复到,理由是它将破坏compat。胡说八道
无论如何。。。因为日期可以在CF中转换为整数,CF认为“1,5”是一个合法的整数,因为它实际上是一个日期。作为一个专注于CF开发的人,除了解释之外,还要给你提供更多的帮助,这是多么的麻烦。抱歉。服务器端验证(仅需要cfif
逻辑,仅循环示例)
…非数字的错误代码
…非整数的错误代码
是整数
直接代码:
<cfif !isNumeric(myVal) and myVal neq int(myVal)> ...error code for not integer<br />
</cfif>
…非整数的错误代码
您也可以编写一个
cffunction
,我也很尴尬,因为向后兼容的原因而责怪没有修复cf8错误?真正地如果功能被破坏,人们就不会使用它。他们到底想维护谁的旧代码?很好!非常感谢。但是现在我想知道,如果代码<有效(“整数”,“1,5”)和ISMICIC(“1,5”)< /代码>错过了一些我没有考虑输入不是整数的情况。HMM,用另外的java对象代理和CFTI/catch来检查是否有整数是什么?亨利-是的,你需要用一个TIG/catch来包装它。无论如何,它都不是一个完美的解决方案,但它将确保您的值是一个整数。我们倾向于为像这样的简单任务编写java实用程序库,并将它们保留在应用程序范围内,因为createObject可能会变得昂贵。如果您看到了isValid()+isNumeric()中的内容,您可能也会:)我喜欢函数isInteger(num){return refind(^\d+$,num);}
更好:)@亨利,很好的一个,我用同样的方法加了一个小加法,也允许负数:“^-?\d+$”
同意。在一种无类型语言中,当你想要/需要它时,进行可靠的类型检查更有意义。我打赌Rupesh@Adobe仍然使用IE6Cf认为字符串“0,6”==“6,0”。我不想再生活在这个星球上了'0,6'='6,0'
TRUE<代码>'12,31'=='31,12'TRUE<代码>'12,6'=='6,12'FALSE<代码>'1,6'=='6,1'FALSE。。。哦,天哪,为什么?我正在收集一些关于社区对这一切的反应的统计数据,我将以某种方式获得Adobe。如果可能的话,如果你能看一看我编写的这篇文章()和这篇调查(),那就很方便了
<cfif !isNumeric(myVal) and myVal neq int(myVal)> ...error code for not integer<br />
</cfif>