数据表中的JSF命令按钮id

时间:2011-01-15 13:14:38

标签: jsf datatable

如何在datatable中添加命令按钮?

<hx:dataTableEx value="#{searchData.searchFriends}" var="s">
   <hx:columnEx>
    <f:facet name="header">
     <h:outputText value="First Name" />
    </f:facet>
    <hx:requestLink action="#{pc_Search.doAddFriendAction}">
     <h:outputText value="Add as Friend" />
     <f:param name="friendId" value="#{s.memberId}" />
    </hx:requestLink>
   </hx:columnEx>
  </hx:dataTableEx>

要在后端获取数据

String friendId = (String)getRequestParam().get("friendId");

但是一旦我将requestlink更改为命令按钮,friedId = null?任何想法如何使用命令按钮

传递值

1 个答案:

答案 0 :(得分:2)

将数据表值包装在DataModel中。然后,您可以按DataModel#getRowData()获取所选行。

public class Bean {
    private List<Friend> friends;
    private DataModel friendsModel;

    public Bean () {
        friends = getItSomehow();
        friendsModel = new ListDataModel(friends);
    }

    public void addAsFriend() {
        Friend selectedFriend = (Friend) friendsModel.getRowData();
        // ...
    }
}

<h:dataTable value="#{bean.friendsModel}" var="friend">
    <h:column>
        <h:commandButton value="Add as friend" action="#{bean.addAsFriend}" />
    </h:column>
</h:dataTable>

应该与IBM Faces Client Framework(那些hx:组件)一样好用。