Java 在启用Spring的Velocity模板内绑定变量集合
假设Velocity 1.5模板有以下表单支持对象:Java 在启用Spring的Velocity模板内绑定变量集合,java,spring,collections,binding,velocity,Java,Spring,Collections,Binding,Velocity,假设Velocity 1.5模板有以下表单支持对象: public class Bucket { String data1; String data2; String data3; String data4; // getters setters blah blah... } 我想将这四个字符串属性绑定到四个下拉单选控件中的以下java.util.Map字符串: "a" : "1" "b" : "2" "c" : "3" "d" : "4" 如果在
public class Bucket {
String data1;
String data2;
String data3;
String data4;
// getters setters blah blah...
}
我想将这四个字符串属性绑定到四个下拉单选控件中的以下java.util.Map字符串:
"a" : "1"
"b" : "2"
"c" : "3"
"d" : "4"
如果在我的页面的控制器模型中,我将支持对象命名为“boData”,并将值映射命名为“labelKeys”,则velocity可以为我绑定支持对象的属性:
#springFormSingleSelect( "boData.data1" $labelKeys "")
#springFormSingleSelect( "boData.data2" $labelKeys "")
#springFormSingleSelect( "boData.data3" $labelKeys "")
#springFormSingleSelect( "boData.data4" $labelKeys "")
但是,有没有办法避免调用#springFormSingleSelect四次?我的意思是,这里有一个模式,但我看不出用速度来表达它的方式
例如,如果我将类Bucket中的这四个字符串属性定义为Java数组或Java.util.List,我如何告诉velocity我需要它为列表中的每个元素绑定一个下拉单选择控件
public class Bucket {
List<String> dataItems = new ArrayList<String>();
// getter, setter...
}
公共类存储桶{
List dataItems=new ArrayList();
//盖特,塞特。。。
}
我感谢您提供的任何见解 不确定我是否理解这个问题。 但似乎您只需要一个
foreach
循环。
在Velocity中,您也可以键入java,如果这能让您的生活更轻松的话
但是,您可以执行以下操作:
#set ($map = $myobject.getMap() )
#foreach ($mapEntry in $map.entrySet())
// $mapEntry.key
// $mapEntry.value
#springFormSingleSelect( "boData.data1" $mapEntry.key "")
#end
您可以对列表执行相同的操作
我希望这有帮助。关于,我不确定我是否理解这个问题。 但似乎您只需要一个
foreach
循环。
在Velocity中,您也可以键入java,如果这能让您的生活更轻松的话
但是,您可以执行以下操作:
#set ($map = $myobject.getMap() )
#foreach ($mapEntry in $map.entrySet())
// $mapEntry.key
// $mapEntry.value
#springFormSingleSelect( "boData.data1" $mapEntry.key "")
#end
您可以对列表执行相同的操作
我希望这有帮助。关于,怎么样:
#foreach($i in [1..4])
#set($field = "boData.data" + $i)
#springFormSingleSelect($field $labelKeys "")
#end
那么:
#foreach($i in [1..4])
#set($field = "boData.data" + $i)
#springFormSingleSelect($field $labelKeys "")
#end
我不确定答案是否清楚。试图解释 Spring-velocity绑定需要整个路径作为#springBind的参数 因此,如果您有一个dataItems集合,则不能像这样绑定
#foreach($dataItem in $dataItems)
#springFormSingleSelect( "dataItem.data1" $labelKeys "")
#end
反而
#set ($end = $dataItems.size() - 1)
#foreach($i in [0..$end])
#springFormSingleSelect( "dataItems[$i].data1" $labelKeys "")
#end
这将绑定集合项。我不确定答案是否清楚。试图解释 Spring-velocity绑定需要整个路径作为#springBind的参数 因此,如果您有一个dataItems集合,则不能像这样绑定
#foreach($dataItem in $dataItems)
#springFormSingleSelect( "dataItem.data1" $labelKeys "")
#end
反而
#set ($end = $dataItems.size() - 1)
#foreach($i in [0..$end])
#springFormSingleSelect( "dataItems[$i].data1" $labelKeys "")
#end
这将绑定集合项。是的。成功了。谢谢事实证明,为了帮助Spring找到我想要绑定到的对象属性,我必须派生一个索引路径。使用$i迭代索引有帮助。例如,
boData.singleDataItem[$i].myProperty
Yup。成功了。谢谢事实证明,为了帮助Spring找到我想要绑定到的对象属性,我必须派生一个索引路径。使用$i迭代索引有帮助。例如,boData.singleDataItem[$i].myProperty