Я не уверен в том, что вы хотите сделать в конце, но почему бы вам не использовать <h:commandLink>
(который сгенерирует тег <a>
HTML) вместо этого (не забудьте вложить свой <h:datatable>
в <h:form>
)?
<h:form id="myForm">
...
<h:dataTable id="grid1" value="#{postControle.lista}" var="post1">
...
<h:column>
<f:facet name="header"><h:outputText style="float: left; font-weight: bold;" value="Opções"/></f:facet>
<h:commandLink action="#{postControle.alterar}" value="Alterar"/>
<h:commandLink action="#{postControle.consultar}" value="Consultar"/>
</h:column>
</h:dataTable>
Затем вы определяете два действия в вашем Java-бине (возвращенное значение String
определяет случай навигации, который будет применяться после выполнения метода):
public String alterar() {
...
}
public String consultar() {
...
}
И в каждом методе действия вы можете получить соответствующий элемент (т.е. post1
), используя метод getRowData()
компонента HtmlDatatable
:
public String alterar() {
HtmlDatatable table = (HtmlDatatable) FacesContext.getCurrentInstance().getViewRoot().findComponent("myForm:id1");
YourClass element = (YourClass) table.getRowData();
...