Sey*_*sen 12 validation coldfusion integer coldfusion-9
为什么#isValid("integer","1,5")#输出是?我希望它输出NO就像#isValid("integer","1.5")#.
我要用<CFIF isvalid("integer","1,5") AND isnumeric("1,5")>... 验证
Hen*_*nry 18
Adobe意识到这一点,但......
州:已关闭
状态:撤回
原因:AsDesigned
https://bugbase.adobe.com/index.cfm?event=bug&id=3169196
TBH我有点不好意思使用一种甚至无法正确验证整数的语言.
更新:
猜猜看,它将在CF12中得到解决!
毫无疑问,这种行为是不正确的.这显然是错误的,应予以纠正.然而,它一直是这样的,并且做出这样一个根本性的改变有很大的潜力打破很多应用程序.我们不希望在此版本中执行此操作.由于Rakshith已经沟通,我们计划在'Dazzle'中进行这样的更改,我们将纠正行为,而不必担心向后兼容性.
http://blog.adamcameron.me/2014/02/can-we-please-agree-that-adobe-is-not.html
Ada*_*ron 17
只是为了扩展这里的答案并解释实际发生的事情.
请参阅此相关错误,其中详细信息的摘要是CF将" m,n"(在何处m和n是数字)解释为DATE(如果可能的话).这是荒谬的:" m,n"不是一种代表地球上任何人的日期的格式,因此CF没有理由以这种方式解释它.
Adobe没有解决这个问题,并引用了相同的理由,即它会向后冲突.胡说八道吧.
无论如何...因为日期可以转换为CF中的整数,CF认为"1,5"是一个合法的整数,因为它实际上是一个日期.作为一个专门的CF开发人员,它是多么令人尴尬的是必须为你提供而不是解释.抱歉.
Mik*_*ser 10
如果你想确保你有一个Integer,你可以使用Java Integer方法.
<cfscript>
createObject("java","java.lang.Integer").parseInt("1,5");
</cfscript>
Run Code Online (Sandbox Code Playgroud)
当给出任何不能解释为Integer的东西时,抛出parseInt()方法.这包括"1,5".