你不能。看一下宏的代码:
#**
* springFormInput
*
* Display a form input field of type 'text' and bind it to an attribute
* of a command or bean.
*
* @param path the name of the field to bind to
* @param attributes any additional attributes for the element (such as class
* or CSS styles or size
*
*#
#macro( springFormInput $path $attributes )
#springBind($path)
<input type="text" id="${status.expression}" name="${status.expression}"
value="$!status.value" ${attributes}#springCloseTag()
#end
因此,如您所见,使用#springFormInput("command.name" 'id="myid" data-zaza="test"')
实际生成:
<input type="text" id="name" id="myid" data-zaza="test" />
但是velocity会清除重复的ID,只留下第一个(id="name"
)。
当您进行测试时,这种“消除”行为变得清晰。例如,手动声明:
<input type="text" id="testA" id="testB" id="testC" name="myTest" value="test!">
生成的 HTML 中的内容是:
<input type="text" id="testA" name="myTest" value="test!">
作为替代方案,您可以显式使用宏代码,生成您需要的内容:
#springBind("command.name")
<input type="text" id="myid" name="${status.expression}"
value="$!status.value" data-zaza="test"#springCloseTag()
${status.expression}
并$!status.value
设置在#springBind
宏中,不用担心它们。