我有一个问题,理解解释器为什么不接受这个:
<properties>
<jstl.version>1.2</jstl.version>
</properties>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>${jstl.version}</version>
</dependency>
错误是:&#34;函数(对象)的错误参数&#34; /
&#34;错误连接的令牌&#34; 。我验证了Object co = current Object
Object o = object(co."Absolute Number")
返回的类型与根据DXL手册声明的co."Absolute Number"
的期望相符:
Object object(int absno[, Module m])
打印&#34;整数&#34; 。似乎很好,但很明显,事实并非如此。
这不是该特定属性的问题。 print type(co."Absolute Number")
应该返回一个字符串,但是使用该属性时,解释器也不会识别数据类型。
在不同的地方添加括号无济于事。尝试将返回的属性值显式转换为整数并没有帮助。将返回值存储到整数变量有什么帮助:
co."Object Text"
我不喜欢,因为它引入了未使用的变量。也可以使用标准字符串方法:将属性值转换为字符串,然后(返回)转换为整数:
Object co = current Object
int no = co."Absolute Number"
Object o = object(no)
但这对我来说相当黑客。我忽略了什么?
答案 0 :(得分:1)
你是对的,DXL编译器对这样的事情有点奇怪。最好的方法是你提到的那个:
Object co = current
Object o = object(intOf(co."Absolute Number" ""))
避免创建无关的变量。另外,旁注:您注意到我在Object
之后遗漏了current
,因为这是不必要的。
这也引出了一个问题,但是......为什么你需要创建co
和o
,因为一旦执行它们,它们都是同一个对象的句柄。你可以这样做:
Object o = current
希望这有帮助。
答案 1 :(得分:0)
错误消息出现在编译时,当co。&#34;绝对数字&#34;没有类型,即编译器不查找预定义的属性或其类型。类型函数正确解析为运行时绝对编号的类型。 create函数继承左侧handide类型,在DXL中是Special。