JSF标签自定义属性常用于获取事件的时候能够简单高效的定位要操作的数据,实现方式其实非常简单,但却非常高效。
举一个常见的例子,比如有一个管理员列表,需要对其中某个学生进行操作,我们可以使用自定义属性来实现此功能。
<h:dataTable value="#{adminBean.adminList}" var="admin" styleClass="table" headerClass="myHeader">
<h:column>
<f:facet name="header">
<h:outputText value="Name"></h:outputText>
</f:facet>
<h:outputText value="#{admin.name}"></h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="OP"></h:outputText>
</f:facet>
<h:commandButton value="Delete"
οnclick="return window.confirm('Are you sure?');"
action="#{adminBean.deleteAdmin}">
<f:param name="id" value="#[admin.id]"/>
</h:commandButton>
</h:column>
</h:dataTable>
Managed bean 中我们就可以如下定为这个管理员
Map<String,String> requestMap = FacesContext.getCurrentInstance().getExterContext.getRequestParameterMap();
String id = requestMap.get("id");