olá pessoal, tenho uma tabela assim:
<rich:dataTable value="#{cadastroBO.tabela}" var="tab" rows = "#{cadastroBO.n}">
<f:facet name="header">
<rich:columnGroup>
<rich:column>
<h:outputText value="Contador"/>
</rich:column>
<rich:column>
<h:outputText value="Nome"/>
</rich:column>
<rich:column>
<h:outputText value="Condição"/>
</rich:column>
<rich:column>
<h:outputText value="Ações"/>
</rich:column>
</rich:columnGroup>
</f:facet>
<h:column>
<h:outputText value="#{tab.k}"/>
</h:column>
<h:column>
<h:outputText value="#{tab.nome}"/>
</h:column>
<h:column>
<h:outputText value="#{tab.condicao}"/>
</h:column>
<h:column>
<a4j:commandLink value="Excluir Pessoa" action="#{cadastroBOAction.removeK}"/>
</h:column>
</rich:dataTable>
“<a4j:commandLink value=“Excluir Pessoa” action=”#{cadastroBOAction.removeK}"/> "
No método removeK, tem como eu saber em qual linha a pessoa clicou para remover?
rod
Agosto 25, 2008, 8:08am
#2
você pode passar o Id do registro que quer remover como parâmetro para a action, assim no método removerK basta recuperar o valor do parâmetro.
<a4j:commandLink value="Excluir Pessoa" action="#{cadastroBOAction.removeK}">
<f:param name="rowId" value="#{tab.id}" />
</a4j:commandLink>
[]'s
[quote=rlazoti]você pode passar o Id do registro que quer remover como parâmetro para a action, assim no método removerK basta recuperar o valor do parâmetro.
<a4j:commandLink value="Excluir Pessoa" action="#{cadastroBOAction.removeK}">
<f:param name="rowId" value="#{tab.id}" />
</a4j:commandLink>
[]'s[/quote]
Valeu cara,
mas como eu pego esse parâmetro?
Pelo FacesContext?
Abraços
djDufu
Agosto 25, 2008, 8:51am
#4
Cara você poderá recuperar o valor do parametro da seguinte maneira:
FacesContext facesContext = FacesContext.getCurrentInstance();
Map map = facesContext.getExternalContext().getRequestParameterMap();
String codigoSelecionado = (String)map.get("rowId");
abs,
Entao, fiz isso aqui:
...
FacesContext facesContext = FacesContext.getCurrentInstance();
Map map = facesContext.getExternalContext().getRequestParameterMap();
String codigo = (String)map.get("rowId");
int i = Integer.parseInt(codigo);
tabela.remove(i);
...
ta dando erro
java.lang.NumberFormatException: null
Esse rowId seria um int ok?
djDufu
Agosto 25, 2008, 9:08am
#6
Cara tem certeza de que está passando o campo correto no parametro, pois este erro ocorre por que o parametro está fazio.
procure debugar o código e verificar qual valor está chegando no momento do get.
Verifique tambem se a propriedade que você está passando, está correta ou está com o valor esperado.
<a4j:commandLink value="Excluir Pessoa" action="#{cadastroBOAction.removeK}">
<f:param name="rowId" value="#{tab.id}" />
</a4j:commandLink>
o atributo #{tab.id} está correto ???
pelo seu código me parece que o correto é ="#{tab.k}"
abs,
entao o atributo é “#{tab.k}”
FacesContext facesContext = FacesContext.getCurrentInstance();
Map map = facesContext.getExternalContext().getRequestParameterMap();
String codigo = (String)map.get(“rowId”);
System.out.println(codigo);
esta retornando null
djDufu
Agosto 26, 2008, 9:49am
#8
Cara ao Invés de Commandlink tente:
<a4j:support event="onclick" action="#{cadastroBOAction.removeK}">
<f:param name="rowId" value="#{tab.k}"/>
</a4j:support>
Outra coisa: você consegue ver o valor do atributo “#{tab.k}” na tela ???
abs,
ola joaosavio, tudo bem?
Vc pode postar o seu metodo excluir?
//remove linha da tabela
public String removeK() {
BCadastroBO bCadBO = new BCadastroBO();
bCadBO = (BCadastroBO) ManagedBean.getContextInfo("#{cadastroBO}"); //pego o bean da sessao
if (bCadBO.getTabela().size() > 0) {
FacesContext facesContext = FacesContext.getCurrentInstance();
Map map = facesContext.getExternalContext().getRequestParameterMap();
String codigo = (String)map.get("rowId");
System.out.println(codigo);
int i = Integer.parseInt(codigo);
tabela.remove(i-1);
n--;
BCadastroBO bCad = new BCadastroBO();
bCad.setN(n);
bCad.setTabela(tabela);
ManagedBean.setContextInfo("#{cadastroBO}", bCad); //seto o bean da sessao
}
return "cadastrarBO"; //retorna para mesma pagina
}
Agora ta funfando
Abraços e valeu
Olá pessoal…
Meu problema é exatamente esse mas nao quer funcionar de jeito nenhum… tentei um monte de coisa já…
Nao quer chamar o metodo na logica de jeito nenhum… será que vcs podem dar uma olhadinha no meu codigo e ver se tem algo errado?
segue…
<h:form id="frmGridItem">
<h:inputHidden id="txtIdAndamento2" value="#{itemAndamentoHandler.andamento.id}"/>
<rich:dataTable id="tbItem" styleClass="tableCenter" value="#{itemAndamentoHandler.itemAndamentoTable}" var="itemAndamento" rows="10">
<f:facet name="header">
<rich:columnGroup>
<rich:column>
<h:outputText value="NOME" />
</rich:column>
<rich:column>
<h:outputText value="TIPO ITEM" />
</rich:column>
<rich:column>
<h:outputText value="TIPO VALOR" />
</rich:column>
<rich:column>
<h:outputText value="AÇÕES" />
</rich:column>
<rich:column>
<h:outputText value="AÇÕES2" />
</rich:column>
</rich:columnGroup>
</f:facet>
<h:column headerClass="th_nome">
<h:outputText value="#{itemAndamento.nome}" />
</h:column>
<h:column headerClass="th_tipoItem">
<h:outputText value="#{itemAndamento.tipoItem.nome}"></h:outputText>
</h:column>
<h:column headerClass="th_codigo">
<h:outputText value="#{itemAndamento.tipoValorItem.nome}"></h:outputText>
</h:column>
<h:column>
<a4j:commandLink value="Editar" action="#{itemAndamentoHandler.editarItemAndamento}" />
</h:column>
</rich:dataTable>
</h:form>
e meu metodo tá assim :
[code]
public void editarItemAndamento(){
Map<String,String> params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
String idItemAndamento = params.get(“idItemAndamento”);
if(idItemAndamento != null && !idItemAndamento.isEmpty()){
this.itemAndamento = acaoLogic.getItemAndamentoDAO().load((Long.parseLong(idItemAndamento)));
}
} [/code]
Minha intenção é carregar um form com um objeto do bean para ser editado.
Agradeço a atenção!
Abração