【问题标题】:What is wrong with headerKey="-1"?headerKey="-1" 有什么问题?
【发布时间】:2014-03-28 21:27:27
【问题描述】:

有什么问题:

<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 的工具提示)说

列表中第一项的键。不能为空! '-1' 和 '' 是正确的, '' 是 不好。

-1 对我来说似乎很合乎逻辑,无论如何它不应该是一个有效的选项。 “是正确的,”在任何层面上对我来说都没有意义,所以我不太担心。

【问题讨论】:

    标签: java html jsp struts2 ognl


    【解决方案1】:

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

    '1' 是一个字符,'01' 是一个字符串,“1”是一个字符串。这很重要,因为如果 “value”属性返回的值与“list”属性中的键类型不同,它们 将不匹配,即使它们的字符串值可能相同。如果它们不匹配,则列表中没有任何内容 将被自动选中。

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

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

    【讨论】:

    • This 答案是我的没有得到足够的关注,可能会对你有所帮助。
    • 谢谢,非常详细的回答。我没有注意到他们在消息中专门使用了单引号。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-09
    • 2014-08-12
    • 2010-12-23
    相关资源
    最近更新 更多