使用 <s:set /> 动态构建元素的名称
Using <s:set /> to dynamically build element's name
我想重复使用一组 HTML 字段元素,并让 struts 从变量构建 'name' 属性。我看到这个 How To Generate unique HTML id attributes within Struts 2 iterator tag 并认为我可以使用类似的东西但无法让它工作。看来我只能在迭代器循环中从 struts 变量构建名称属性。我怎样才能用一个简单的变量来做到这一点?
这是我的代码,第一次尝试使用变量,第二次尝试使用迭代器:
<s:set var="type" value="Main" />
<s:textfield name="prefix%{#type}.Name"/>
<s:set var="AList" value="{'Main'}" />
<s:iterator value="AList" var="Ltype">
<s:textfield name="prefix%{#Ltype}.Name"/>
</s:iterator>
这会生成 2 个元素:
<input type="text" name="prefix.Name" value="">
<input type="text" name="prefixMain.Name" value="">
第一个不替换变量,迭代器循环工作。
为什么它不起作用,我该怎么做?
您正在将 值 分配给第一个变量,而不是字符串文字,
并且由于在您的 ValueStack 中没有 一个名为 Main
的对象,您正在将 一个空字符串 分配给 type
变量:
<s:set var="type" value="Main" />
当您在第二个示例中(几乎)做得很好时:
<s:set var="AList" value="{'Main'}" />
只需使用
<s:set var="AList" value="%{'Main'}" />
或
<s:set var="AList" value="'Main'" />
无处不在,它会起作用。
{}
单独使用是无用且危险的,因为它在OGNL中有特殊含义(列表投影,列表选择等)
我想重复使用一组 HTML 字段元素,并让 struts 从变量构建 'name' 属性。我看到这个 How To Generate unique HTML id attributes within Struts 2 iterator tag 并认为我可以使用类似的东西但无法让它工作。看来我只能在迭代器循环中从 struts 变量构建名称属性。我怎样才能用一个简单的变量来做到这一点?
这是我的代码,第一次尝试使用变量,第二次尝试使用迭代器:
<s:set var="type" value="Main" />
<s:textfield name="prefix%{#type}.Name"/>
<s:set var="AList" value="{'Main'}" />
<s:iterator value="AList" var="Ltype">
<s:textfield name="prefix%{#Ltype}.Name"/>
</s:iterator>
这会生成 2 个元素:
<input type="text" name="prefix.Name" value="">
<input type="text" name="prefixMain.Name" value="">
第一个不替换变量,迭代器循环工作。
为什么它不起作用,我该怎么做?
您正在将 值 分配给第一个变量,而不是字符串文字,
并且由于在您的 ValueStack 中没有 一个名为 Main
的对象,您正在将 一个空字符串 分配给 type
变量:
<s:set var="type" value="Main" />
当您在第二个示例中(几乎)做得很好时:
<s:set var="AList" value="{'Main'}" />
只需使用
<s:set var="AList" value="%{'Main'}" />
或
<s:set var="AList" value="'Main'" />
无处不在,它会起作用。
{}
单独使用是无用且危险的,因为它在OGNL中有特殊含义(列表投影,列表选择等)