gpt4 book ai didi

java - Velocity - #springFormInput 和自定义 ID

转载 作者:行者123 更新时间:2023-12-02 05:25:02 30 4
gpt4 key购买 nike

每当我使用#springFormInput时,例如:

#springFormInput("command.name")

我得到 ID 设置为 name 的标记:

<input type="text" id="name" ... />

在许多情况下,我想要诸如“类别”或“名称”之类的短名称,但我对将它们放在 ID 中感到不舒服(ID 应该是唯一的)。如何指示 Spring 对元素使用不同的 ID?

我尝试过类似的方法:

#springFormInput("command.name" 'id="myid" data-zaza="test"')

...但我的 ID 仍然被覆盖:

<input type="text" id="name" data-zaza="test" ... />

我希望它发出 id="myid"

最佳答案

你不能。看一下宏的代码:

#**
* 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" />

但是速度消除了重复的 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 宏中设置的,不用担心它们.

关于java - Velocity - #springFormInput 和自定义 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11549438/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com