我有一個綁定到Spring模型的HTML表單,以接收用戶數據並將其添加到數據庫中。這工作正常。我已經使用Spring Freemarker宏爲字段在發送前進行輸入和驗證,例如春季格式的Freemarker複選框輸入
<@spring.formInput path="myForm.username"/>
<@spring.showErrors ", "/>
這也工作正常進行文字輸入。什麼導致我的問題是用Spring宏渲染多個複選框。我原來的HTML是:
<input name="roleList" type="checkbox" value="1"/>Adminstrator
<input name="roleList" type="checkbox" value="2"/>Developer
<input name="roleList" type="checkbox" value="3"/>Customer
我創建一個Java Map<String, String>
的,在我的控制方法的關鍵是「1」,「2」,「3」這一信息,並將其添加到模型,再換成HTML本宏在我FTL模板:
<@spring.formCheckboxes path="quickForm.roleList" options="${roleMap}" separator="<br>"/>
但我得到一個錯誤
Expecting a string, date or number here, Expression roleMap is instead a freemarker.template.SimpleHash
它爲什麼會放棄該消息,如果它需要一個地圖? (如Spring文檔中的FreeMarker宏)任何人都可以解釋我應該如何提供複選框數據?
只要提一下,我認爲這裏的實際問題的診斷是不正確的。我已經完成了你描述的同樣的事情,在我的控制器中創建地圖並將它們添加到模型中,並且它工作正常,中間沒有複雜的服務。我的猜測是這裏的關鍵是從'options = $ {roleMap}'改變爲'options = roleMap' – DaveyDaveDave