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>