coldfusion - Coldfusion imageDraw java.lang.Double 不能转换为 java.lang.String
问题描述
我正在使用imageDraw
并遇到一个奇怪的错误。如果我只是插入值并且不尝试使用我从其他地方检索的值,它可以工作,但我必须从其他地方绘制边距和行高的值并计算东西。
x = 50;
y = 800;
newImg = imageNew("", x, y);
imageSetAntialiasing(newImg, true);
setup['size'] = lineHeight*dpi;
setup['font'] = "Arial";
imageDrawText(newImg,img.text,topMargin,leftMargin,setup);
当我将 imageDrawText 中的每个元素放在单独的行上时,错误指向属性集合(设置)。我确实试过这个
setup['size'] = "#lineHeight*dpi#";
但它也没有用。
调试顶部的完整错误消息:
处理请求时发生错误
java.lang.Double
将类型的对象强制转换为不java.lang.String
兼容的类型时出错。这通常表示 Java 中的编程错误,尽管它也可能意味着您尝试以与设计不同的方式使用外来对象。java.lang.Double
不能转换为java.lang.String
解决方案
这是较旧的 ColdFusion 版本(在 ColdFusion 2016 之前)中的一个错误,因为该size
属性是显式转换的:(String)size
. 即使您将值作为字符串传递,您的值也可能不包含小数位,因为 ColdFusion 会尝试将值解析为整数:Integer.parseInt((String)size)
// works
setup['size'] = "12";
// works, because literal numbers are casted to String
setup['size'] = 12;
// DOES NOT work, because any math calculation results into a Double
setup['size'] = 12 * 1;
// DOES NOT work, because this is a Double
setup['size'] = 12.1;
您使用setup['size'] = toString(int(...));
的解决方案是此错误的正确解决方法。int()
确保您最终没有小数位(防止 NumberFormatException)并toString()
确保您传递了一个字符串(防止 ClassCastException)。
(这篇文章更像是一个评论,但评论太长了。随意接受你自己的答案。)
推荐阅读
- react-native - 当我在抽屉内使用选项卡导航器时,如何修复“在导航状态中未找到‘路线’”
- r - 在 R keras 中,我想使用 predict_generator() 函数来获取 True y 值
- php - phpseclib NET/SSH2 从帖子表单中提取变量
- javascript - Adding click event to iframe
- google-cloud-platform - 在 BigQuery 中检索 ~100MB 查询结果大小的最有效方法
- header - 制表符 - 标题格式化程序参数
- java - JAVA我们如何以相反的方式循环集合
- java-8 - 将内存中的代理类 bytes[] (com.sun.proxy.$Proxy0.class) 重新编译成通用的 $Proxy0.java 文件
- amazon-web-services - AWS 随机不健康实例
- mysql - 如果两个现有列匹配,则 SQL 查询添加新列并从另一列添加值