Pegar informações de um DataTable (JSF)

6 respostas
E

ae pessoal… tamo ae novamente com mais duvidas;;;

tenho o seguinte:
uma pagina que possui um dataTable, e no dataTable coloquei um inputTex tornando assim o valor alteravél, e coloquei um link pra chamar um metodo de alteracao na classe, ficando assim?

pagina{

<h:dataTable

id=dtGrupos

value="#{bean.todosGrupos}"

var=tudo>

<h:inputText styleClass=“valor” style=“form” value="#{tudo.janeiro}" size=“10” />

<h:commandLink immediate=“true” action="#{bean.alteraUgb}">

<h:outputText styleClass=“textoDeCampos” value=“Alterar” />

</h:commandLink>

}

no codigo:{

public String alteraUgb(){

Object tudo = FacesContext.getCurrentInstance().getExternalContext().getRequestMap().get(“tudo”);	

String teste=tudo.toString();

}

ai qdo exibo o resultado do atributo teste, ele mostra os valores originais e não o que eu alterei.

alguem sabe por que e como resolver?

6 Respostas

D

immediate tá como “true”!!! Deve ser false!!!

gilliard_santos

tenta colocar um setPropertyActionListener no teu commandLink.

&lt;h:commandLink immediate="true" action="#{bean.alteraUgb}"&gt;
&lt;h:outputText styleClass="textoDeCampos" value="Alterar" /&gt;
&lt;f:setPropertyActionListener value="#{tudo}" target="#{bean.todoAlteracao}"/&gt;
&lt;/h:commandLink&gt;

aí vc cria um atributo do mesmo tipo dos objetos que estao na sua lista “todosGrupos” e cria o get e o set. Entao em vez de buscar do request, vc acessa diretamente essa propriedade no seu managedBean.

E

na verdade eu jah sei que se eu colocar immediate como false não vai chamar o meu metodo na classe…

E

gilliard_santos:
tenta colocar um setPropertyActionListener no teu commandLink.

&lt;h:commandLink immediate="true" action="#{bean.alteraUgb}"&gt;
&lt;h:outputText styleClass="textoDeCampos" value="Alterar" /&gt;
&lt;f:setPropertyActionListener value="#{tudo}" target="#{bean.todoAlteracao}"/&gt;
&lt;/h:commandLink&gt;

aí vc cria um atributo do mesmo tipo dos objetos que estao na sua lista “todosGrupos” e cria o get e o set. Entao em vez de buscar do request, vc acessa diretamente essa propriedade no seu managedBean.

vamos ver se eu entendi, caso eu faça isso o q vc ta me dizendo, como o metodo vai receber o valor do input?

D

na verdade eu jah sei que se eu colocar immediate como false não vai chamar o meu metodo na classe…

Se immediate igual a true nenhuma informacao sera setada no seu objeto. Neste caso, vc nunca vai conseguir recuperar o valor do seu input! Da uma olhada na documentacao do JSF!!!

D

Alem disso, caso ja tenha tentado e nao obteve sucesso!!! Verifique os erros de conversao. Neste caso seu metodo commandLink nao sera executado.

Criado 13 de abril de 2007
Ultima resposta 13 de abr. de 2007
Respostas 6
Participantes 3