我有一个与弹簧形式控制器关联的命令对象:
public class PluginInstance {
private Set<PluginParameter> pluginParameters = new HashSet<PluginParameter>();
... some other string/long properties and getter setters...
}
PluginParameter中还有一个包含值
的Setpublic class PluginParameter {
private String parmName;
private Set<PluginParmvalue> pluginParmvalues = new HashSet<PluginParmvalue>();
...some other string/long properties and getter setters...
}
(通常,pluginParmvalues只包含一个值,列表已用于将来的可扩展性)
在弹簧形式中,我将值绑定为
<form:input path="pluginParameters[${itemsRow.index}].pluginParmvalues[0].parmValue" />
但问题是可以有一个表单:select(向用户提供多个预定义选项)或表单:input(用户可以输入任何值)。这必须从另一个对象
决定public class PluginConfigParm {
private String parmName;
private ArrayList<String> choices;
...getter setters and other properties
}
我必须将PluginConfigParm.paramName的名称与PluginParameter.paramName匹配,并且PluginConfigParm.choices.size()&gt; 0然后形成:select将显示填充PluginConfigParm.choices的值,否则形成:将显示输入。
问题很简单:我该怎么做? 任何帮助将受到高度赞赏。
答案 0 :(得分:1)
使用List&lt;&gt;而不是Set&lt;&gt;在控制器中。问题解决了。可以设置&lt;&gt;没有可以用弹簧形式绑定的getter / setter。
所以<form:input path="pluginParameters[${itemsRow.index}].pluginParmvalues[0].parmValue" />
和列表&lt;&gt;在控制器让我的生活更轻松。
答案 1 :(得分:0)
Set不是索引集合,因此我无法使用此语法
pluginParameters[${itemsRow.index}].pluginParmvalues[0].parmValue
答案 2 :(得分:0)
E:
class person{
set name<string> = new HashSet<String>()
}
<input type="hidden" path="person.name" name="person.name" value="<%=valueStr%>"/>
take valueStr = "hello, world"
以逗号分隔值给出..设置工作
它为我工作