Bom dia galera,
Tenho um grid e quando utilizo o p:commandLink com um f:setPropertyActionListener para passar o objeto do grid para excluir ou editar um registro, na primeira chamada o objeto não é carregado no MB, mas ai clicar em seguida, o objeto é carregado.
Só funciona se eu passar o objeto via parâmetro para o método, mas eu queria usar o f:setPropertyActionListener
XHTML
<p:dataTable id=“listaCategoriaInsumo” rows=“10” styleClass=“pn_grid"
value=”#{categoriaInsumoBean.resultList}" var=“categoriaInsumo”>
<f:facet name=“header”>
<p:columnGroup>
<p:column breakRowBefore=“true"
sortBy=”${categoriaInsumo.nomeCategoria}“
sortOrder=”#{categoriaInsumoBean.orderPorNome}">
<p:commandLink value="#{msgs['categoria.insumo.nome']}"
render=":listaCategoriaInsumo"
action="#{categoriaInsumoBean.ordenarPorNome()}" />
</p:column>
<p:column>
<h:outputText value="#{msgs['categoria.insumo.descricao']}" />
</p:column>
<p:column colspan="2"/>
</p:columnGroup>
</f:facet>
<p:column>
<h:outputText value="#{categoriaInsumo.nomeCategoria}" />
</p:column>
<p:column>
<h:outputText value="#{categoriaInsumo.descricaoCategoria}" />
</p:column>
<p:column styleClass="cl_actions">
<p:commandLink actionListener="#{categoriaInsumoBean.showForm()}">
<f:setPropertyActionListener value="#{categoriaInsumo}"
target="#{categoriaInsumoBean.categoriaVO}" />
<h:graphicImage title="#{msgs['button.editar']}"
value="/img/bt/edit.png" />
</p:commandLink>
</p:column>
<p:column styleClass="cl_actions">
<p:commandLink actionListener="#{categoriaInsumoBean.excluir(categoriaInsumo)}"
update="listaCategoriaInsumo" immediate="true">
<f:setPropertyActionListener
value="#{categoriaInsumo.codigoCategoria}"
target="#{categoriaInsumoBean.categoriaVO.codigoCategoria}" />
<h:graphicImage title="#{msgs['button.excluir']}"
value="/img/bt/delete.png" />
</p:commandLink>
</p:column>
<f:facet name="footer">
<p:dataScroller for="listaCategoriaInsumo"
id="dsListaCategoriaInsumo" maxPages="5" fastControls="auto" />
</f:facet>
</p:dataTable>
MB
package br.com.forward.insumos.bean;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Logger;
import javax.annotation.PostConstruct;
import javax.faces.view.ViewScoped;
import javax.inject.Inject;
import javax.inject.Named;
import br.com.forward.common.CategoriaInsumoVO;
import br.com.forward.interfaces.facade.CategoriaInsumoFacadeLocal;
import br.com.forward.util.Utils;
/**
* Bean da tela categoriaInsumo.xhtml
*
* @author Herberth Nilsen
*
*/
@ViewScoped
@Named
public class CategoriaInsumoBean extends BasicBean {
/**
*
*/
private static final long serialVersionUID = 10150539659042223L;
/** The Constant LOGGER. */
public static final Logger LOGGER = Logger.getLogger("CategoriaInsumoBean.class");
private List<CategoriaInsumoVO> resultList = new ArrayList<CategoriaInsumoVO>();
private CategoriaInsumoVO categoriaVO = new CategoriaInsumoVO();
//
// private SortOrder orderPorCodigo = SortOrder.unsorted;
//
// private SortOrder orderPorNome = SortOrder.unsorted;
@Inject
private CategoriaInsumoFacadeLocal categoriaInsumoFacade;
@PostConstruct
public void init() {
LOGGER.info("CategoriaInsumoBean.init - INICIO");
if (Utils.isEmpty(this.resultList)) {
this.pesquisar();
}
LOGGER.info("CategoriaInsumoBean.init - FIM");
}
public void pesquisar() {
LOGGER.info("CategoriaInsumoBean.pesquisar - INICIO");
this.resultList = this.categoriaInsumoFacade.carregarCategoriaInsumos();
LOGGER.info("CategoriaInsumoBean.pesquisar - FIM");
}
public void salvar() {
LOGGER.info("CategoriaInsumoBean.salvar - INICIO = " + this.categoriaVO);
this.categoriaInsumoFacade.salvar(this.categoriaVO);
this.pesquisar();
this.reset();
this.hideForm();
LOGGER.info("CategoriaInsumoBean.salvar - FIM");
}
public void excluir() {
LOGGER.info("CategoriaInsumoBean.excluir - INICIO = " + this.categoriaVO);
this.hideForm();
this.categoriaInsumoFacade.excluir(this.categoriaVO);
this.reset();
this.pesquisar();
LOGGER.info("CategoriaInsumoBean.excluir - FIM= " + this.categoriaVO);
}
@Override
public void showForm() {
this.reset();
super.showForm();
}
public void reset() {
this.categoriaVO = new CategoriaInsumoVO();
}
public String ordenarPorNome() {
//TODO
// orderPorCodigo = SortOrder.unsorted;
//this.pesquisar();
// if (this.orderPorNome.equals(SortOrder.ascending)) {
//
// this.orderPorNome = SortOrder.descending;
//
// } else {
//
// this.orderPorNome = SortOrder.ascending;
//
// }
return null;
}
public void ordernarPorDescricao() {
//TODO
// this.orderPorNome = SortOrder.unsorted;
//
// if (this.orderPorCodigo.equals(SortOrder.ascending)) {
//
// this.orderPorCodigo = SortOrder.descending;
//
// } else {
//
// this.orderPorCodigo = SortOrder.descending;
//
// }
}
public List<CategoriaInsumoVO> getResultList() {
return resultList;
}
public void setResultList(List<CategoriaInsumoVO> resultList) {
this.resultList = resultList;
}
public CategoriaInsumoVO getCategoriaVO() {
return this.categoriaVO;
}
public void setCategoriaVO(CategoriaInsumoVO categoriaVO) {
this.categoriaVO = categoriaVO;
}
// TODO
// public SortOrder getOrderPorCodigo() {
//// return orderPorCodigo;
// }
// public void setOrderPorCodigo(SortOrder orderPorCodigo) {
//// this.orderPorCodigo = orderPorCodigo;
// }
//
// public SortOrder getOrderPorNome() {
//// return orderPorNome;
// }
//
// public void setOrderPorNome(SortOrder orderPorNome) {
//// this.orderPorNome = orderPorNome;
// }
}
Valeu pela ajuda