headerKey =“ - 1”有什么问题?

时间:2014-03-28 21:27:27

标签: java html jsp struts2 ognl

有什么问题:

<s:select list="fruits" name="fruitSelect" id="fruitSelect"
listKey="fid" listValue="fname" headerKey="-1" headerValue="Pick a fruit!" />

大量在线示例使用此值: http://www.coderanch.com/t/439139/Struts/wrong-select http://www.mkyong.com/struts2/struts-2-sselect-drop-down-box-example/

但实际文档(您可以通过将鼠标悬停在符号上来查看Eclipse中的工具提示)说

  

列表中第一项的键。一定不能空! &#39; -1&#39;和&#39;&#39;是正确的,&#39;&#39;是    坏。

-1对我来说似乎很合乎逻辑,无论如何它都不应该是一个有效的选项。 &#34;是对的,&#34;对我来说在任何层面都没有意义,所以我不太关心它。

1 个答案:

答案 0 :(得分:3)

密钥没有问题,但可能与文档有点不同:-1是一个整数键,'-1'是一个字符串,''是一个空字符,{{1} }是一个空字符串,但键不应为空。因此""-1'-1'' '是有效值。来自文档:

  

&#39; 1&#39;是一个炭,&#39; 01&#39;是一个字符串,&#34; 1&#34;是一个字符串。这很重要,因为如果   您的&#34;值&#34;返回的值属性与&#34; list&#34;中的键不是同一类型。属性,他们   即使它们的String值可能相等,也不会匹配。如果他们不匹配,列表中没有任何内容   将自动选中。

您应该为" "属性提供相应的字段类型,因此listKey用于数字类型的整数,而不是-1' '用于字符和字符串类型。

框架在比较" "标记的键和值时使用类型转换,并避免在OGNL运行时某处发生类型转换错误,您可以更好地正确提供类型,并且两个关键属性具有相同的类型。如果键值(不应为空)与两个属性中指定的值匹配,则将填充标题值选项。