我有一个表单,其中包含一些用弹簧速度宏绑定的字段:
#springFormInput("model.email", "required email='true' maxlength='100'")
#springFormInput("model.name", "required maxlength='100'")
...
我想将DropDown绑定到一个值,并将该DropDown的OPTIONS设置为我的模型上的值,如:
public class MyDto {
private String email;
private String name;
private String dropdownValue;
private List<String> dropdownOptions;
...
}
我的观点是:
#springFormInput("model.email", "required email='true' maxlength='100'")
#springFormInput("model.name", "required maxlength='100'")
#springFormSingleSelect("model.dropdownValue", "dropdownOptions", "required")
...
它不起作用。该列表没有值。 我怎么能这样做?
答案 0 :(得分:3)
来自文档:
#springFormSingleSelect ($path $options $attributes)
参数:
path
:要绑定的字段的名称(即searchCriteria.title
)。
options
:Map
包含可在输入字段中选择的所有可用值。地图的键表示将从表单POST
返回并绑定到命令对象的值。属于该键的值用作向用户显示的标签。通常这种映射由控制器作为参考数据提供。可以使用任何Map实现,具体取决于所需的行为。
attributes
:要包含在其中的任意标记或文字的附加字符串
HTML标签本身。该字符串由宏回显字面。例如,在
textarea
字段您可以提供'rows="5" cols="60"'
属性或者您可以传递属性
样式信息,例如'style="border:1px solid silver"'
。
因此,在您的具体情况下,您必须dropdownOptions
Map
:
private Map<String, String> dropdownOptions;
像map.put("x","y")
一样向地图添加对象会生成<option value="x">y</option>
。
然后在视图中使用它:
#springFormSingleSelect("model.dropdownValue", $model.dropdownOptions,"required")
出于好奇,此处宏的代码(对.keySet()
的调用需要Map
):
#macro( springFormSingleSelect $path $options $attributes )
#springBind($path)
<select id="${status.expression}" name="${status.expression}" ${attributes}>
#foreach($option in $options.keySet())
<option value="${option}"
#if("$!status.value" == "$option")
selected="selected"
#end>
${options.get($option)}</option>
#end
</select>
#end
答案 1 :(得分:0)
我发现了一个类似的问题,我希望答案可以帮助你解决这个问题。
#set ($end = $dataItems.size() - 1)
#foreach($i in [0..$end])
#springFormSingleSelect( "dataItems[$i].data1" $labelKeys "")
#end