Доступ к определенной строке p: datatable в Backing Bean по щелчку h: CommandLink без атрибута привязки

Пожалуйста, найдите мой код ниже для p:datatable с h:commandlink в качестве одного из столбцов:

   <p:dataTable id="listTable" value="#{listBean.lazyDatalist}"
                         var="list" paginator="true" paginatorPosition="top" rows="10"
                         rowIndexVar="rowIndex" 
                        rowStyleClass="#{(rowIndex mod 2) eq 0 ? 'rowStyleOdd' : 'rowStyleEven'}" 
                        lazy="true">
                        <p:ajax event="page" listener="#{listBean.searchLazyData}"/>
                        <p:column style="width:3%;" headerText="#{msg['userlist.dt.srNo']}">
                            <h:outputText value="#{list.orderCount}"></h:outputText>
                        </p:column>                 
                        <p:column  style="width:7%;"
                            headerText="#{msg['userlist.dt.EmployeeID']}">
                        <h:outputText value="#{list.employeeID}"/>  
                        </p:column>
                        <p:column  style="width:12%;"
                            headerText="#{msg['userlist.dt.Name']}">
                        <h:outputText value="#{list.employeeName}"></h:outputText>  
                        </p:column>
                        <p:column headerText="#{msg['userlist.dt.actionReq']}">
                                <h:commandLink value="#{list.actionRequired}" action="#{listBean.getDetails}" styleClass="linkStyle"></h:commandLink>                       
                        </p:column>
                    </p:dataTable>

Я хочу получить доступ к строке данных в Backing Bean ListBean, для которой щелкнули h: commandLink с помощью action="#{listBean.getDetails}" без использования атрибута привязки данных.

Мой Backingbean ограничен сеансом, и мы используем jsf 2.1.7 Mojarra.


person Viniti    schedule 02.06.2015    source источник


Ответы (3)


Но ГЛАВНОЕ, взгляните на первый пример выбора в витрине PrimeFaces http://www.primefaces.org/showcase/ui/data/datatable/selection.xhtml

person Kukeltje    schedule 02.06.2015
comment
И, пожалуйста, ищите дубликаты - person Kukeltje; 02.06.2015
comment
Спасибо :) Но я хочу использовать commandLink специально, а в простых числах все функции выбора с данными имеют commandButton. пожалуйста помоги. - person Viniti; 02.06.2015
comment
Могу ли я предложить сделать шаг назад и изучить некоторые основы jsf /вопросы/10688755/ - person Kukeltje; 02.06.2015

Передайте выбранную строку в качестве параметра вашему методу, например

<h:commandLink value="#{list.actionRequired}" action="#{listBean.getDetails(list)}" styleClass="linkStyle"></h:commandLink> 

и измените getDetails, чтобы принять параметр типа элемента listBean.lazyDatalist

person Smutje    schedule 02.06.2015
comment
Я пробовал то же самое, но не смог передать параметр в атрибуте действия. - person Viniti; 02.06.2015
comment
не может пройти - вы когда-нибудь передавали параметр методу, вызываемому JSF? Если нет, то вам лучше узнать это в первую очередь. - person Smutje; 02.06.2015

var содержит объект, который используется для заполнения каждой строки. Вы можете просто передать его в своем действии, например #{listBean.getDetails(list)}. Не забудьте добавить этот параметр в метод bean-компонента.

Кстати: list очень вводит в заблуждение. Вам лучше назвать его element или с его конкретным именем сущности, может быть employee. Ваша команда будет благодарна.

person Kai    schedule 02.06.2015
comment
Не удалось передать параметр в атрибуте действия. получение ошибки в eclipse как синтаксической ошибки в EL. Пожалуйста помоги. - person Viniti; 02.06.2015