結合克萊圖斯的答案,dbell我居然可以讓它工作,並願與您(包括提交表單,報告克萊圖斯解決方案的一個缺陷,當值的結合)
不能共享的解決方案直接使用的地圖作爲命令,然而有一個需要包裝一個懶惰地圖
public class SettingsInformation {
private Map<String, SettingsValue> settingsMap= MapUtils.lazyMap(new HashMap<String, SettingsValue>(),FactoryUtils.instantiateFactory(SettingsValue.class));
public Map<String, SettingsValue> getSettingsMap() {
return settingsMap;
}
public void setSettingsMap(Map<String, SettingsValue > settingsMap) {
this.settingsMap = settingsMap;
}
}
SettingsValue另一個域對象是實際包的值的類。
public class SettingsValue {
private String value;
public SettingsValue(String value) {
this.value = value;
}
public SettingsValue() {
}
public String getValue() {
return value;
}
public void setValue(String propertyValue) {
this.value = propertyValue;
}
控制器方法提供的模型是這樣的:
@RequestMapping(value="/settings", method=RequestMethod.GET)
public ModelAndView showSettings() {
ModelAndView modelAndView = new ModelAndView("settings");
SettingsDTO settingsDTO = settingsService.getSettings();
Map<String, String> settings = settingsDTO.getSettings();
SettingsInformation settingsInformation = new SettingsInformation();
for (Entry<String, String> settingsEntry : settings.entrySet()) {
SettingsValue settingsValue = new SettingsValue(settingsEntry.getValue());
settingsInformation.getSettingsMap().put(settingsEntry.getKey(), settingsValue);
}
modelAndView.addObject("settings", settingsInformation);
return modelAndView;
}
你的形式看起來應該像這樣
<form:form action="${actionUrl}" commandName="settings">
<form:input path="settingsMap['exampleKey'].value"/>
<input type="submit" value="<fmt:message key="settings.save"/>"/>
</form:form>
控制器方法處理表單提交照常
@RequestMapping(value="/settings", method=RequestMethod.POST)
public ModelAndView updateSettings(@ModelAttribute(value="settings") SettingsInformation settings) {
[...]
}
我驗證了SettingsInformation bean實際上是用表單中的值填充的。
感謝您幫助我解決這個問題;如果你有任何問題隨時問。
你的sintaxis是正確的,但是地圖屬性並沒有實際綁定。問題是生成的代碼類似於。所以,當你提交這個表單時,沒有什麼東西把正確的價值放在屬性中。 – sinuhepop 2010-06-03 16:34:00
Map字符串值可以在JSP中綁定。地圖/對象的整數值可以綁定嗎? – 2012-04-04 14:06:26
看起來像語法
現在適用於地圖,至少在Spring 3.0.7 – altumano 2012-06-21 13:54:29