JSF DataTable - 特别记录

时间:2011-09-08 13:14:08

标签: java jsf

  

可能重复:
  How can I pass a parameter to a commandLink inside a datatable?

我有一个MySQL数据库。我只使用一个名为USERS的表,其中包含以下列:userid,username,name,age。我通过以下方式显示它们:

<h:dataTable 
    var="my_user"   
    value="#{user.users}"
    border="1"
    styleClass="mainTable"
    headerClass="heading"
    rowClasses="evenRow, oddRow, "
    id="rend">

    <h:column>
        <f:facet name="header">#{lng.userId}</f:facet>
        <h:outputText value="#{my_user.userId}" />
    </h:column>
    <h:column>
        <f:facet name="header">#{lng.username}</f:facet>
        <h:outputText value="#{my_user.username}" />
    </h:column>
    <h:column>
        <f:facet name="header">#{lng.name}</f:facet>
        <h:outputText value="#{my_user.name}" />
    </h:column>
    <h:column>
        <f:facet name="header">#{lng.age}</f:facet>
        <h:outputText value="#{my_user.age}" />
    </h:column>
    <h:column>
        <f:facet name="header">#{lng.edit}</f:facet>
        <h:graphicImage name="edit.png" library="images" styleClass="tableIcon">
            <f:ajax event="click" listener="#{someClass.edit}" render="rend"/>
        </h:graphicImage>
    </h:column>
    <h:column>
        <f:facet name="header">#{lng.del}</f:facet>
        <h:graphicImage name="delete.png" library="images" styleClass="tableIcon">
            <f:ajax event="click" listener="#{someClass.delete}" render="rend"/>
        </h:graphicImage>
    </h:column>
</h:dataTable>

(国际化,这就是为什么#{lng。*})

我有两列带有用于编辑和删除的图标。我该怎么做才能将特定行上的用户ID传递给我的函数进行删除和编辑?

1 个答案:

答案 0 :(得分:0)

如何做到这一点的方法很少

  • 在JSF 2.0中,方法表达式可以带参数

    <h:commandLink action="#{myBean.execute('hello')}"/>
    
  • 要使用f:param标签并在action方法内部,您可以从参数map中获取该值

    FaceContext.getCurrentInstance().getExternalContext().getRequestParametersMap()
    
  • 使用f:setPropertyActionListener标记