JSF - Parametros na URL, pegar os valores e modificar a acao do formulario

11 respostas
K

Ola pessoal
eu tenho uma pagina de busca, onde, de acordo com o parametro passado pela URL, ela deve tomar algumas “decisoes”
segue as duvidas

1-pegar esses valores da URL e passar para o bean, porem, sem dar o post na pagina, isso é possivel?

2-pegar o valor da URL e habilitar ou desabilitar o edicao de campos(eu sei fazer isso em Java Script, porem, queria saber se é possivel fazer isso direto no formuario no JSP ou JSF)
os exemplos que vou dar agora sao meramente exemplos, nao sei se é possivel

...
<h:inputText value="#{pessoaBuscaMB.pessoaFisicaDB.pessoaFisica.nome}" id="nome" maxlength="30" size="30" styleClass="FormCampo" >
....
<% 
int status;
//nao sei como, mas teria que pegar o valor da URL aqui
if (status == 1){
        name.value = "valor qualquer";//eu teria que mudar o valor de acordo com esse status
	name.disable = true;//nesse caso, eu quero fazer o campo ficar desabilitado para a alteracao, mas ele nao pode perder o valor que define para ele antes
}
%>

bem, nao sei se esse “exemplo” que passei ficou claro, mas a intencao é colocar um valor no campo, e em alguns campos o desabilitar, como ja disse, eu consegui em Java Script, porem, eu tenho uma funcao que faz o request dos parametros da pagina e toma acoes
eu preciso fazer esse mudanca de valor de desabilitar em campos do tipo imputText, Select, Radio e Check

3-fazer a pagina chamar uma metodo automaticamente assim que for carregada
por exemplo, eu tenho esse botao

<h:commandButton id="comandoCadastrar" value="Cadastrar" action="#{pessoaBuscaMB.cadastro}" ></h:commandButton>

mas para que ele funcione, eu tenho que clicar no botao, o que eu quero é fazer com que ele chame o “action” automaticamente quando carregar a pagina e o metodo do action faz o que ele tem que fazer, é possivel forçar isso?

acho que é so por enquanto

abs
T+

11 Respostas

R

1-pegar esses valores da URL e passar para o bean, porem, sem dar o post na pagina, isso é possivel?

2-pegar o valor da URL e habilitar ou desabilitar o edicao de campos(eu sei fazer isso em Java Script, porem, queria saber se é possivel fazer isso direto no formuario no JSP ou JSF) […]

Isso aqui vai te ajudar,

3-fazer a pagina chamar uma metodo automaticamente assim que for carregada
por exemplo, eu tenho esse botao

Dá uma olhada no Restfaces, ele te ajudará a resolver isso e muitos problemas problemas com o método GET,
https://restfaces.dev.java.net/

Abraços e boa sorte.

K

rponte:
1-pegar esses valores da URL e passar para o bean, porem, sem dar o post na pagina, isso é possivel?

2-pegar o valor da URL e habilitar ou desabilitar o edicao de campos(eu sei fazer isso em Java Script, porem, queria saber se é possivel fazer isso direto no formuario no JSP ou JSF) […]

Isso aqui vai te ajudar,

Abraços e boa sorte.

cara
to tentando e nao estou conseguindo
veja se vc pode me ajudar

faces-config.xml

&lt;managed-bean&gt;
  &lt;managed-bean-name&gt;pessoaBuscaMB&lt;/managed-bean-name&gt;
  &lt;managed-bean-class&gt;br.com.krusst.precadastro.managedbeans.PessoaBuscaMB&lt;/managed-bean-class&gt;
  &lt;managed-bean-scope&gt;request&lt;/managed-bean-scope&gt;
  &lt;managed-property&gt;
  	&lt;property-name&gt;pessoaId&lt;/property-name&gt;
  	&lt;value&gt;#{param.pessoaId}&lt;/value&gt;
  &lt;/managed-property&gt;
  
 &lt;/managed-bean&gt;

pessoabusca.jsf

&lt;h:outputLink value="pessoacadastro.jsf" id="linkedit"&gt;
	&lt;f:param name="pessoaId" value="#{pessoa.id}" /&gt;
	&lt;h:outputText value="Edit" /&gt;
&lt;/h:outputLink&gt;

PessoaBuscaMB

public class PessoaBuscaMB extends PessoaFisicaDB {

	PessoaFisicaDB pessoaFisicaDB = new PessoaFisicaDB();
	
	private String parametro;
	private String pessoaId;
	

	public String getPessoaId() {
		return pessoaId;
	}

	public void setPessoaId(String pessoaId) {
		this.pessoaId = pessoaId;
	}

	public String getParametro() {
		return parametro;
	}

	public void setParametro(String parametro) {
		this.parametro = parametro;
	}
...

agora, em qual momento ele vai entender que os valores de parametros vao ser transferidos?
como eu faco para passar o valor “getPessoaID” para onde eu quero?
é nessa parte que estou me complicando

abs

T+

R

Quando você acessar um link que possua o parâmetro “&pessoaId=3232” seu managed já estará populado com este valor :slight_smile:

M

olá pessoal

gostaria da ajuda de vocês!

deêm uma olhada no probleminha semelhante que estou tendo…
http://www.guj.com.br/posts/list/0/126920.java#1050092

obrigado!

D

Galera,

Estou tentando passar esse parâmetros pela Url para fazer confirmação de cadastro de usuário através de um link enviado por email.

meu Bean:

<managed-bean>
		<managed-bean-name>AtivaClientePB</managed-bean-name>
		<managed-bean-class>br.com.xxxx.comparador.view.AtivarCliente</managed-bean-class>
		<managed-bean-scope>request</managed-bean-scope>
		<managed-property> 
        <property-name>codigoAtivacao</property-name>
        <value>#{param.codigoAtivacao}</value>
    </managed-property>
    <managed-property>
        <property-name>codigoCliente</property-name>
        <value>#{param.codigoCliente}</value>
    </managed-property>
	</managed-bean>

Trecho da página:

<h:outputLink value="cadastro_sucesso.jsf" >
    <f:param name="codigoAtivacao" value="#{param.codigoAtivacao}" />
    <f:param name="codigoCliente" value="#{param.codigoCliente}"/>
    <h:outputText value="Clique aqui" />
</h:outputLink>

E o meu Bean:

public class AtivarCliente {

	private String codigoAtivacao;
	
	private Long codigoCliente;
	
	
	
	

	public AtivarCliente() {
		
		System.out.println(codigoAtivacao);
		System.out.println(codigoCliente);
	}

	public void setCodigoCliente(Long codigoCliente) {
		this.codigoCliente = codigoCliente;
	}

	public Long getCodigoCliente() {
		return codigoCliente;
	}

	public void setCodigoAtivacao(String codigoAtivacao) {
		this.codigoAtivacao = codigoAtivacao;
	}

	public String getCodigoAtivacao() {
		return codigoAtivacao;
	}
	
	
}

Quando clico no botão não acontece nada!

Grande abraço
A

Danilo,

aqui você encontra explicações para o que você quer fazer!

Esse cara ai manja muito!

xD~~

D

[RESOLVIDO]
Fiz assim:

<h:form>
		<h:commandLink action="#{clientePB.ativaCadastro}" >
    <f:param name="codigoAtivacao" value="#{param.codigoAtivacao}" />
    <f:param name="codigoCliente" value="#{param.codigoCliente}"/>
    <h:outputText value="Clique aqui" />
</h:commandLink>
</h:form>
A

Danilo,

você pode usar o atributo value no commandLink ao invés de usar o outputText dentro do commandLink.

Até mais.

D

É verdade!

Valeu, abraço

D

danilocmiranda:
[RESOLVIDO]
Fiz assim:

<h:form>
		<h:commandLink action="#{clientePB.ativaCadastro}" >
    <f:param name="codigoAtivacao" value="#{param.codigoAtivacao}" />
    <f:param name="codigoCliente" value="#{param.codigoCliente}"/>
    <h:outputText value="Clique aqui" />
</h:commandLink>
</h:form>

Danilo, como está seu bean? Fiz exatamente como você fez e no meu aparece como se fosse uma requisição POST pra mesma view onde estou.

A

Olá pessoal,

Estou tentando passar alguns parâmetros para outra view no jsf, porém, o h:link só funciona depois que eu clico no commandButton. Se não fizer isso os parâmetros não aparecem na barra do navegador. Essa é uma dúvida.

A outra é: Tem como passar todos os campos do form como parâmetro? Eu fiz algumas pesquisas e vi que o includeViewParams deveria fazer isso, mas não está funcionando aqui.

<h:commandButton value="teste"/>
					
	<h:link target="_blank" includeViewParams="true"
	     outcome="/operacional/importacao/relatorioGrupo/relFlpParametrizadoGrupo">
	    <h:graphicImage value="/resources/images/16x16/print_printer.png" />
	    <f:param name="grupoSelecionado" value="#{flpImportacaoGrupoMB.grupoSelecionado}"/>
	    <f:param name="campoDataSelecionado" value="#{flpImportacaoGrupoMB.campoDataSelecionado}"/>
	    <f:param name="dataInicio" value="#{flpImportacaoGrupoMB.dataInicio}"/>
	    <f:param name="dataFim" value="#{flpImportacaoGrupoMB.dataFim}"/>
	    <f:param name="tipoProcessoSelecionado" value="#{flpImportacaoGrupoMB.tipoProcessoSelecionado}"/>
	</h:link>
Criado 22 de abril de 2008
Ultima resposta 30 de jul. de 2012
Respostas 11
Participantes 7