我如何知道在ui中点击哪个元素:重复?

问题描述:

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

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

在迭代项目

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

两种情况

private List<Item> items; 
private Item item; 

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

或者只是把操作方法,您需要确保同一items被保留在随后的请求。

顺便提一下,这两种方法也适用于h:dataTable