有什么问题:
<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;对我来说在任何层面都没有意义,所以我不太关心它。
答案 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运行时某处发生类型转换错误,您可以更好地正确提供类型,并且两个关键属性具有相同的类型。如果键值(不应为空)与两个属性中指定的值匹配,则将填充标题值选项。