Pegar Id do componente JSF com JS

7 respostas
cristianrm

Pessoal estou tendo dificuldades em pegar o id do componete h:outputText ,

Java Script
function testando(){
		var coddd = document.getElementById('form1:var1:codigo_pauta').value;  //no firefox esta mostrando null aqui, não consegui descobrir pq :(
		alert(coddd);
	}
<h:form  id="form1">
       <h:dataTable var="pauta" value="#{uwfcvPautasFaces.pautas}" border="1" id="var1">
			<h:column>
				<f:facet name="header">
					<h:outputText value="Pauta"/>
				</f:facet>
				<h:outputText value="#{pauta.pautaNumero}" id="codigo_pauta"  />
				<h:commandButton value="Ok" onclick="testando()"></h:commandButton>
			</h:column>
			<h:column>
			 &nbsp;
				<f:facet name="header">
					<h:outputText value="Data Pauta"/>
				</f:facet>
				<h:outputText value="#{pauta.pautaData}"/>		
			</h:column>
			<h:column>
			 &nbsp;
				<f:facet name="header">
					<h:outputText value="Listar"/>
				</f:facet>
				
				
			</h:column>
		</h:dataTable>
  </h:form>

7 Respostas

A

Tenta um teste com:

cristianrm

isso foi a primeira coisa que fiz André, o erro que da é no console do firefox

is null , na tela não aparece nada. nem a caixa do alert com null.

cristianrm

detalhe se eu tiro o value do final ai cai no alert mas vem null o valor.

cristianrm

debugando no google chrome ele gera esse código

<tr><td><span id="form1:var1:14:codigo_pauta">00016/2010</span><input id="form1:var1:14:j_id_jsp_801928970_6" name="form1:var1:14:j_id_jsp_801928970_6" type="submit" value="Ok" onclick="var cf = function(){testando()};var oamSF = function(){};return (cf.apply(this, [])==false)? false : oamSF.apply(this, []); " /></td><td>
cristianrm

pelo o que to vendo esse 14 é sequencial alguem sabe como jogo isso no js?

Hebert_Freitas

Cristian, se não me engano vc tem que pegar o contexto de execução do jsf, assim como vc faz quando tem que pegar o path de um arquivo que está no projeto jsf, tem um bean padrão das páginas que mostra isso, só não estou lembrando o nome e não estou com meu micro aqui para ver.

Mas existem outras alternativas, o problema é que o jsf monta uma árvore de componentes, onde o elemento filho herda o id do elemento pai.

Dé um olhada nesta discussão, derrepente ajuda: http://www.guj.com.br/java/225852-pegar-valor-de-inputtext-pelo-javascript-jsf.

Se conseguir resolver, posta a resposta aqui.

R

Olá.
Se vc usar prependId=“false” no formulário,pode pegar o id do componente sem precisar concatenar o id do form:

Então,no form ficaria:

&lt;h:form  id="form1" prependId="false" &gt;

E no JS:

var coddd = document.getElementById(codigo_pauta').value
Criado 5 de janeiro de 2011
Ultima resposta 9 de jan. de 2011
Respostas 7
Participantes 4