在JSF中,我们可以绑定HtmlDataTable到backing bean并获取行数据.但是ui:repeat甚至没有绑定属性.那么,我怎么知道点击了哪一行(元素)ui:repeat?
要么使用 f:setPropertyActionListener
<h:form>
<ui:repeat value="#{bean.items}" var="item">
<h:outputText value="#{item.value}">
<h:commandButton value="submit" action="#{bean.submit}">
<f:setPropertyActionListener target="#{bean.item}" value="#{item}"/>
</h:commandButton>
</ui:repeat>
</h:form>
Run Code Online (Sandbox Code Playgroud)
同
private List<Item> items;
private Item item;
public void submit() {
System.out.println(item);
}
Run Code Online (Sandbox Code Playgroud)
或者只是将动作方法放在迭代项中
<h:form>
<ui:repeat value="#{bean.items}" var="item">
<h:outputText value="#{item.value}">
<h:commandButton value="submit" action="#{item.submit}" />
</ui:repeat>
</h:form>
Run Code Online (Sandbox Code Playgroud)
无论哪种情况,您都需要确保items在后续请求中保留相同的内容.
顺便说一下,这两种方式也适用于h:dataTable.
| 归档时间: |
|
| 查看次数: |
4599 次 |
| 最近记录: |