2011-04-26 11 views
2

列出我有綁定到一個對象的列表屬性標準的多選列表框。不需要逗號分割結合的字符串(從列表框中),當春

的問題是,當選擇在列表框中的單個值,並且該值中包含逗號,它被分成的兩個項目的列表時,輸入數據被綁定到列表屬性。

例如。如果列表框項是「我包含一個逗號」,該屬性設置爲包含兩個元素的列表:「我含有」和「逗號」。

我使用Spring 3.0.5和MVC:註解驅動的,所以我越來越由FormattingConversionServiceFactoryBean設立的標準轉換器;在那裏,StringToCollectionConverter被調用。雖然這在其他地方(在Spring的內部)有用,但我不想在這裏。

任何人都知道正確的方式來解決這個問題?這是一個明顯而簡單的問題,我不禁想到我在這裏失去了一些明顯的東西;它可以真的成爲Spring中的一個bug /監督嗎?毫無疑問,將會有各種配置Converters或PropertyEditor的方法來解決這個問題,但是肯定會有一個優雅和框架友好的答案。良好的措施

表單標籤:

<form:select path="someListProperty" multiple="true" items="${possibleValuesForSomeListProperty}" size="5" itemLabel="name" itemValue="name" /> 

乾杯。

回答

1

什麼似乎是明顯的答案對我來說是保持在服務器端的列表,並讓客戶端只選擇偏移,而不是實際值:

<select name="list" > 
<option value="0">Foo</option> 
<option value="1">Bar</option> 
<option value="2">Phleem</option> 
</select> 

現在在你的控制器,構建列表並激活索引被選中的項目。這樣你就可以解決你的問題,並且讓惡意客戶機會更少地操縱請求值。

+0

的確不錯,而事實上,價值觀會更經常地發佈爲索引/ IDS /代碼會解釋這個事實,更多的人還沒有碰到過這樣的問題,也許它爲什麼無法發現。我會採取類似這樣的方法,但是我希望可以使用一些簡單的配置。 (你提到的安全點在這方面不是問題,但我明白你的意思。) – Adrian 2011-04-27 01:31:25

相關問題