Я пытаюсь передать прослушивателю ajax индекс комбо, созданного внутри повторяемой области, но я действительно не знаю, как это сделать.
Это мой код:
<p:repeat value = "#{bean.data}" var = "datas" varStatus = "dataList">
<p:outputLabel value = "#{datas.key}" />
<p:selectOneMenu widgetVar = "singleData#{dataList.index}">
<f:selectItems value = "#{datas.value}"
var = "row"
itemValue = "#{row.id}"
itemLabel = "#{row.name}"
/>
<p:ajax update = "@form"
listener = "#{bean.select(datas.value.get(singleData#{dataList.index}.index))}" />
</p:selectOneMenu>
</p:repeat>
Как видите, этот код неверен, потому что я не могу записать singleData#{dataList.index}.index внутри своего слушателя. Это вернет следующую ошибку:
javax.servlet.ServletException: Encountered " <IDENTIFIER> "# "" at line 1, column 58.
Как я могу использовать widgetVar в моем selectOneMenu?
Боюсь, ваш подход не совсем правильный. Ваш selectOneMenu должен отображать свойство управляемого компонента. Затем в вашем слушателе вы сможете прочитать это свойство.
Возможный дубликат вложенный el в jsf
В реальном сценарии у меня есть неопределенное количество элементов selectOneMenu. Я не хочу иметь N атрибутов в моем управляемом компоненте. С этим решением у меня есть только один метод select, который я могу повторно использовать с каждой комбинацией. Это работает нормально, единственная проблема здесь - получить индекс моего selectOneMenu, чтобы я мог передать своему методу объект, содержащийся в списке, по выбранному индексу ..
@Kukeltje, ссылка, которую вы разместили, это совсем другое. В этом случае они используют dataTable, у которого есть свойство rowIndex. Моя проблема здесь в том, что я использую widgetVar для получения индекса, но, как и имя, построенное с другим параметром, я не могу получить доступ к его свойству индекса с помощью EL.
Посмотрите на ОБЩУЮ общую / общую проблему (как указано в заголовке этой темы), она касается вложенного EL. Это ЯВЛЯЕТСЯ решение вашей проблемы (или хотя бы первой части), прочтите его, посмотрите, что вы оба сделали не так





Чего именно вы хотите достичь? Зачем вам этот индекс?