开发者

How do I know which element is clicked in ui:repeat?

In JSF, we can bind 开发者_Go百科HtmlDataTable to backing bean and get the row data. But ui:repeat doesn't even have a binding attribute. So, how do I know which row (element) is clicked in ui:repeat?


Either use 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>

with

private List<Item> items;
private Item item;

public void submit() {
    System.out.println(item);
}

Or just put action method in iterated item

<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>

Either case, you need to ensure that the same items is preserved in subsequent request.

Both ways by the way also just works in a h:dataTable.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜