在没有绑定属性的情况下单击 h:CommandLink 访问 Backing Bean 中 p:datatable 的特定行
Access particular row of p:datatable in Backing Bean on click of h:CommandLink without binding attribute
请在下方找到我的 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 中的数据表行,在不使用数据表绑定属性的情况下使用 action="#{listBean.getDetails}" 单击 h:commandLink。
我的 Backingbean 是会话范围的,我们使用的是 jsf 2.1.7 Mojarra。
将选定的行作为参数传递给您的方法,例如
<h:commandLink value="#{list.actionRequired}" action="#{listBean.getDetails(list)}" styleClass="linkStyle"></h:commandLink>
并更改 getDetails
以接受元素类型为 listBean.lazyDatalist
的参数
var
包含用于填充每一行的对象。你可以像 #{listBean.getDetails(list)}
这样在你的动作中传递它。不要忘记将此参数添加到您的 bean 方法中。
顺便说一句:list
非常具有误导性。您最好将其命名为 element
或使用它的具体实体名称,也许 employee
。您的团队将不胜感激。
但最重要的是,请看一下 PrimeFaces 展示柜中的第一个选择示例 http://www.primefaces.org/showcase/ui/data/datatable/selection.xhtml
请在下方找到我的 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 中的数据表行,在不使用数据表绑定属性的情况下使用 action="#{listBean.getDetails}" 单击 h:commandLink。
我的 Backingbean 是会话范围的,我们使用的是 jsf 2.1.7 Mojarra。
将选定的行作为参数传递给您的方法,例如
<h:commandLink value="#{list.actionRequired}" action="#{listBean.getDetails(list)}" styleClass="linkStyle"></h:commandLink>
并更改 getDetails
以接受元素类型为 listBean.lazyDatalist
var
包含用于填充每一行的对象。你可以像 #{listBean.getDetails(list)}
这样在你的动作中传递它。不要忘记将此参数添加到您的 bean 方法中。
顺便说一句:list
非常具有误导性。您最好将其命名为 element
或使用它的具体实体名称,也许 employee
。您的团队将不胜感激。
但最重要的是,请看一下 PrimeFaces 展示柜中的第一个选择示例 http://www.primefaces.org/showcase/ui/data/datatable/selection.xhtml