2

I have a form with some fields binded with spring velocity macros:

#springFormInput("model.email", "required email='true' maxlength='100'")
#springFormInput("model.name", "required maxlength='100'")
...

I want to bind a DropDown to a value, and set the OPTIONS of that DropDown to be a value on my model, like:

public class MyDto {
    private String email;
    private String name;
    private String dropdownValue;
    private List<String> dropdownOptions;

    ...
}

And my view goes with:

#springFormInput("model.email", "required email='true' maxlength='100'")
#springFormInput("model.name", "required maxlength='100'")
#springFormSingleSelect("model.dropdownValue", "dropdownOptions", "required")
...

It's not working. The list comes without values. How can i do that?

4

2 回答 2

3

从文档:

#springFormSingleSelect ($path $options $attributes)
  • 允许选择单个所需值的选项下拉框。


参数:

  • path: 要绑定的字段的名称(即searchCriteria.title)。

  • options: aMap包含可以在输入字段中选择的所有可用值。映射的键代表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
于 2013-06-07T22:51:39.587 回答
0

我发现了一个类似的问题,希望答案能帮助您解决这个问题。

 #set ($end = $dataItems.size() - 1)
    #foreach($i in [0..$end])
      #springFormSingleSelect( "dataItems[$i].data1" $labelKeys "")
    #end

来源

于 2013-06-07T17:58:31.257 回答