Использование пользовательского атрибута данных в 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/); они будут доступны, но не видны в источнике.

Другие вопросы по тегам