Использование пользовательского атрибута данных в Struts 2 s: выберите
Я пытаюсь использовать пользовательские атрибуты данных HTML в тегах Struts2, вот мой пример кода
<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>
Можно ли описать атрибут данных в стойках, выбрать теги для параметров внутри него.
2 ответа
Переопределить <s:select>
шаблон тега. Или просто используйте HTML-теги с <s:iterator>
<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>
Вы не можете вставлять пользовательские атрибуты непосредственно в тег пользовательского интерфейса Struts2.
Согласно комментарию Дейва Ньютона, вы можете с Struts2 >= 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/); они будут доступны, но не видны в источнике.