在Struts 2中使用自定义数据属性:选择

时间:2012-11-19 13:27:20

标签: struts2 struts-tags

我正在尝试在Struts2标记中使用HTML的自定义数据属性 这是我的示例代码

<s:select list="myList" listKey="myListVal"  listValue="myListDesc"  data-inputs="myListInput" ></s:select>

我期待像这样的事情

<select >
     <option value="myListVal1" data-inputs="myListInput1">myListDesc1</option>
     <option value="myListVal2" data-inputs="myListInput2">myListDesc2</option>
     <option value="myListVal3" data-inputs="myListInput3">myListDesc3</option>
</select>

相反,我得到了这个

<select data-inputs="myListInput" >
     <option value="myListVal1" >myListDesc1</option>
     <option value="myListVal2" >myListDesc2</option>
     <option value="myListVal3" >myListDesc3</option>
</select>

是否可以在其中的选项的struts select标签中描述数据属性。

2 个答案:

答案 0 :(得分:5)

覆盖<s:select>代码模板。或者只使用带有<s:iterator>

的HTML标记
<select name="list">
   <s:iterator value="myList" status="stat">
      <option value="<s:property value="myListVal"/>" data-inputs="myListInput<s:property value="#stat.index"/>"><s:property value="myListDesc"/></option>
   </s:iterator>
</select>

答案 1 :(得分:2)

您无法直接将自定义属性注入Struts2 UI标记。

根据Dave Newton的评论,您可以使用Struts2&gt; = 2.1.x

但是仍然无法将它们应用于option元素而不是select,因此我会留下答案,以防您需要将原始select标记扩展到定义自定义行为(例如将某些属性应用于选项)。


您可以extend <s:select> Struts2标记,以允许它管理新类型的属性......:http://bodez.wordpress.com/2009/03/13/customising-struts2-jsp-tags/

或直接创建自己的代码,但在您的情况下会有点矫枉过正:http://joshuajava.wordpress.com/2008/12/27/creating-custom-components-with-struts-2/)。

最后但并非最不重要的是,您甚至可以在呈现页面后添加自定义属性,使用类似jQuery(demo:http://jsfiddle.net/CLNDs/);它们是可访问的,但在源代码中不可见。