2014-03-28 67 views
1

有什麼問題:網上的例子headerKey =「 - 1」有什麼問題?

<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對我來說似乎很合邏輯,反正它不應該是一個有效的選項。 「是對的」,對我來說在任何層面都沒有意義,所以我並不太在意。

回答

3

沒有錯鍵,但可能與文檔一點點:-1是一個整數的關鍵,'-1'是一個字符串,''是一個空字符,""是一個空字符串,但關鍵不應該是空的。因此,-1,'-1',' '," "是有效值。從文檔:

'1'是一個字符,'01'是一個字符串,「1」是一個字符串。這很重要,因爲如果 「value」屬性返回的值與「list」屬性中的鍵不是同一類型,即使它們的字符串值可能相等,它們也不會匹配。如果它們不匹配,則將自動選擇列表 中的任何內容。

你應該提供給listKey屬性的相應字段的類型,所以-1是數字類型的整數,而不是' '" "是字符和字符串類型。

該框架在比較select標記的鍵和值時使用類型轉換,並避免在OGNL運行時某處出現類型轉換錯誤,因此最好提供正確的類型,並且兩個關鍵屬性具有相同的類型。如果鍵值不應該爲空,則匹配兩個屬性中指定的值,則會填充標題值選項。

+0

[This](http://stackoverflow.com/a/22451505/573032)答案是我沒有得到足夠的重視,可能對你有幫助。 –

+0

謝謝,非常詳細的答案。我沒有注意到他們在郵件中特別使用了單引號。 – Roger