If you you have a command link or button in a row of a dataTable, there is an easy way to get to row bean from an javax.faces.event.ActionListener.
Code Block |
---|
|
<h:dataTable value="#{ResultsBean.hitSet.hits}" var="hit">
<h:column>
<h:commandLink>
<f:actionListener type="net.java.OrderActionListener" />
<h:outputText value="Order" />
</h:commandLink>
...
</h:column>
</h:dataTable>
|
By this simple Java code in your subclass of javax.faces.event.ActionListener you get the row bean.
Code Block |
---|
|
public class OrderActionListener implements ActionListener {
public void processAction(ActionEvent anEvent) throws AbortProcessingException {
YourBeanClass tmpBean = null;
UIComponent tmpComponent = anEvent.getComponent();
while (null != tmpComponent && !(tmpComponent instanceof UIData)) {
tmpComponent = tmpComponent.getParent();
}
if (tmpComponent != null && (tmpComponent instanceof UIData)) {
Object tmpRowData = ((UIData) tmpComponent).getRowData();
if (tmpRowData instanceof YourBeanClass) {
tmpBean = (YourBeanClass) tmpRowData;
//TODO Implementation of your method
}
}
//TODO Exception Handling if UIData not found or tmpRowBean of wrong type
}
}
|