我怎么知道在ui中点击了哪个元素:重复?

时间:2010-05-08 15:28:13

标签: jsf facelets

在JSF中,我们可以将HtmlDataTable绑定到backing bean并获取行数据。但ui:repeat甚至没有绑定属性。那么,我如何知道在ui:repeat中点击了哪一行(元素)?

1 个答案:

答案 0 :(得分:8)

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

private List<Item> items;
private Item item;

public void submit() {
    System.out.println(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>

无论哪种情况,您都需要确保在后续请求中保留相同的items

顺便说一句,两种方式也适用于h:dataTable