问题描述
我正在遍历一个列表并希望访问该值以创建一个文本输入字段.不幸的是,我无法访问 <s:textfield> 标签内的循环变量
I'm looping over a list and want to access the value to create a text input field. Unfortunatley I'm failing to access the loop variable inside the <s:textfield> tag
这是我尝试过的:
<s:iterator var="tag" value="searchTagList"> <s:property value="#tag"/> <s:textfield key="searchResults.#tag" name="#tag" value="#tag" /> </s:iterator>
<s:property value=#tag"/> 被正确评估并显示循环变量.但是 <s:textfield> 中的 #tag 永远不会被评估.
The <s:property value="#tag"/> is evaluated correctly and shows the loop variable. But the #tag in the <s:textfield> is never evaluated.
我也尝试用 <s:property value="#tag"/> 代替 #tag 没有成功.
I also tried to put <s:property value="#tag"/> instead of #tag without success.
推荐答案
使用标签的key属性代替三个name,value,标签.至于你已经定义的其中两个,你可以改变
The tag's key attribute used instead of three ones name,value,label. As far as two of them you have already defined, you can change
<s:textfield label="%{getText('searchResults.'+#tag)}" name="%{#tag}" />
该值由 name 属性检索.您应该为 name 属性中评估的名称提供一个 getter.请注意,如果您的操作扩展了 ActionSupport,则 getText() 可用.而且您必须在名称标签中强制进行名称评估.
The value is retrieved by the name attribute. You should provide a getter for the name evaluated in the name attribute. Note, getText() is available if your action extends ActionSupport. And you have to force name evaluation in the name tag.