Struts2 文本域动态键属性
Struts2 textfield dynamic key attribute
我正在尝试重构我的代码,我正在寻找动态设置 <s:textfield>
的关键属性的可能性。
所以我的代码是这样的:
<s:set name="type" value="%{process.commands[%{#counter}].type}"/>
<s:if test="%{#type.getLabel() == 'Start'}">
<s:textfield name="process.commands[%{#counter}].statement"
key="lbl.commandType.start"/>
</s:if>
<s:if test="%{#type.getLabel() == 'Stop'}">
<s:textfield name="process.commands[%{#counter}].statement"
key="lbl.commandType.stop"/>
</s:if>
<s:if test="%{#type.getLabel() == 'Check'}">
<s:textfield name="process.commands[%{#counter}].statement"
key="lbl.commandType.check"/>
</s:if>
但我真正要找的是这样的东西,所以它会在一行中:
key="lbl.commandType.'%{#type.getLabel()}'"
或
key="lbl.commandType.<s:property value='#type.getLabel()'/>"/>
但是 none 有效,我没有发现任何关于动态键属性的信息。有人知道解决方案吗?
如果您想从 i18n 资源中获取字段标签,请使用 label
属性和 getText
方法从资源中实际检索值。
<s:textfield name="process.commands[%{#counter}].statement"
label="%{getText('lbl.commandType.' + #type.getLabel())}" />
或使用 <s:text>
而不是 getText
。
<s:text var="labelText" name="%{'lbl.commandType.' + #type.getLabel()}" />
<s:textfield name="process.commands[%{#counter}].statement" label="%{#labelText}" />
请注意,如果您的 type
中有 属性 label
并且 getter 和 setter 正确,那么您可以使用 #type.label
#type.getLabel()
.
我正在尝试重构我的代码,我正在寻找动态设置 <s:textfield>
的关键属性的可能性。
所以我的代码是这样的:
<s:set name="type" value="%{process.commands[%{#counter}].type}"/>
<s:if test="%{#type.getLabel() == 'Start'}">
<s:textfield name="process.commands[%{#counter}].statement"
key="lbl.commandType.start"/>
</s:if>
<s:if test="%{#type.getLabel() == 'Stop'}">
<s:textfield name="process.commands[%{#counter}].statement"
key="lbl.commandType.stop"/>
</s:if>
<s:if test="%{#type.getLabel() == 'Check'}">
<s:textfield name="process.commands[%{#counter}].statement"
key="lbl.commandType.check"/>
</s:if>
但我真正要找的是这样的东西,所以它会在一行中:
key="lbl.commandType.'%{#type.getLabel()}'"
或
key="lbl.commandType.<s:property value='#type.getLabel()'/>"/>
但是 none 有效,我没有发现任何关于动态键属性的信息。有人知道解决方案吗?
如果您想从 i18n 资源中获取字段标签,请使用 label
属性和 getText
方法从资源中实际检索值。
<s:textfield name="process.commands[%{#counter}].statement"
label="%{getText('lbl.commandType.' + #type.getLabel())}" />
或使用 <s:text>
而不是 getText
。
<s:text var="labelText" name="%{'lbl.commandType.' + #type.getLabel()}" />
<s:textfield name="process.commands[%{#counter}].statement" label="%{#labelText}" />
请注意,如果您的 type
中有 属性 label
并且 getter 和 setter 正确,那么您可以使用 #type.label
#type.getLabel()
.