Jsf - parâmetros  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
marciob7@yahoo.com.br
Debugger

Membro desde: 06/12/2006 11:42:27
Mensagens: 52
Offline

Olá,

Li vários tópicos sobre parâmetros...

http://www.guj.com.br/posts/list/47554.java
http://www.guj.com.br/posts/list/37440.java
http://www.guj.com.br/posts/list/43962.java
http://www.guj.com.br/posts/list/47088.java

mas não consegui sair do chão...

tenho um lista de cidades:
código descriçao
1 cidade a
2 cidade b

isso já está listando na página (conscidade.jsp) ... agora qdo eu clicar em um código gostarid de mostrar os detalhes...

oque eu tenho:


conscidade.jsp:
...
<h:commandLink action="#{cidade.altera}">
<h:outputText value="#{cid.Codcidade}"/>
<f:param name="codigo" value="#{cid.CodCidade}" />
</h:commandLink>
...


CidadeBean.java:

...
public String altera(){

String cod = getParameter("codigo");
return "alterar"
...


faces-config.xml
...

<navigation-rule>
<from-view-id>/conscidade.jsp</from-view-id>
<navigation-case>
<from-outcome>insere</from-outcome>
<to-view-id>/inserir.jsp</to-view-id>
</navigation-case>
</navigation-rule>


<managed-bean>
<managed-bean-name>cidade</managed-bean-name>
<managed-bean-class>com.corejsf.CidadeBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
...


o problema é que eu não consigo pegar o parâmetro?
ah...tb não sei se é nesse lugar que devo pegar os parâmetros ?
atualmente tá dando:
cannot find symbol method getParameter(java.lang.String)

como to querendo aprender to usando o JCreator

certamente deve estar faltando essa classe, mas qual é e onde encontro?


para finalizar gostaria de saber se o correto ou mais correto é usar parametros ou usar actionlistener?


Agradeço...e tô precisando mesmo dessa ajuda!
abraço
Insônia
Debugger
[Avatar]

Membro desde: 24/03/2005 23:06:33
Mensagens: 73
Offline

[editado]
esquece o comentario inicial... dei bobeira
[/editado]

Qto a duvida agora:

Eu jah utilizei commandLink passando parametros. Nunca utilizei um commandLink com um outputText dentro. Sempre utilizo apenas o commandLink, colocando como "value" o texto que quero apresentar. Algo assim:



Para passar parametros, vc fez certo (no jsp). Mas no faces-config vc deve informar que o teu bean tem uma propriedade.

Revisando, no jsp:



No faces-config:



Lembrando que, como definimos uma propriedade no faces-config chamada codigo, entao o Managed Bean PRECISA ter um metodo getCodigo/setCodigo.

Logo, no managed-bean CidadeBean.java:




Assim eu acho que funciona Espero ter ajudado...


SCJP, SCWCD
marciob7@yahoo.com.br
Debugger

Membro desde: 06/12/2006 11:42:27
Mensagens: 52
Offline

blz... fiz as alterações...

<managed-bean>
<managed-bean-name>cidade</managed-bean-name>
<managed-bean-class>com.corejsf.CidadeBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
<property-name>codigo</property-name>
<value>#{param.codigo}</value>
</managed-property>
</managed-bean>

acredito que não preciso de um bean cid só com este cidade deve dar certo.

agora só preciso do saber qual import colocar para
cannot find symbol method getParameter(java.lang.String)


eu não poderia usar algo do tipo
FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("codigo");

bom..assim ele não encontra o FacesContext


valeu
t+
Insônia
Debugger
[Avatar]

Membro desde: 24/03/2005 23:06:33
Mensagens: 73
Offline

Hum... eu andei vendo o teu primeiro post, e o trecho abaixo me faz supor qual o motivo do erro:



Para recuperar o valor do parametro, vc deve utilizar :



Definimos os metodos get/setCodigo no ManagedBean... basta utiliza-lo agora


Acho que isso resolve...

SCJP, SCWCD
marciob7@yahoo.com.br
Debugger

Membro desde: 06/12/2006 11:42:27
Mensagens: 52
Offline

olha... não cheguei lá...

jsp
<h:commandLink action="#{cidade.altera}">
<h:outputText value="#{cid.Codcidade}"/>
<f:param name="codigo" value="#{cid.CodCidade}" />
</h:commandLink>

classe
get e set

faces-config
<managed-bean>
<managed-bean-name>cidade</managed-bean-name>
<managed-bean-class>com.corejsf.CidadeBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
<property-name>codigo</property-name>
<value>#{param.codigo}</value>
</managed-property>
</managed-bean>


mas dá o seguinte erro...

javax.faces.FacesException: javax.faces.FacesException: The scope of the referenced object: '#{param.codigo}' is shorter than the referring object


aproveito tb para perguntar se não tem como só recuperar o parâmetro sem defini-lo no faces-config?

valeu
t+
Insônia
Debugger
[Avatar]

Membro desde: 24/03/2005 23:06:33
Mensagens: 73
Offline

Talvez este erro esteja ocorrendo porque vc está usando o escopo de sessao... eu sempre usei escopo = request.



Sempre fui aconselhado a usar escopo de sessao somente se necessario, pois podemos estar consumindo recursos do servidor sem necessidade. Repasso o conselho pra ti

Nao sou um conhecedor muito grande de JSF. Só sei como utilizar parametros da forma como eu te mostrei. Eu uso e funciona numa boa! Talvez outros usuarios do forum possam te mostrar uma alternativa diferente.

Uma duvida: quem eh esse bean "cid"? o Bean "cidade" eu vi a definicao, mas esse bean "cid" eu ainda nao vi... ele existe?


SCJP, SCWCD
marciob7@yahoo.com.br
Debugger

Membro desde: 06/12/2006 11:42:27
Mensagens: 52
Offline

Vamos lá...

face-config

<managed-bean>
<managed-bean-name>cidade</managed-bean-name>
<managed-bean-class>com.corejsf.CidadeBean</managed-bean-class>
<managed-property>
<property-name>codigo</property-name>
<value>#{param.codigo}</value>
</managed-property>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>


.jsp

<h:dataTable value="#{cidade.todas}" var="cid">
<h:column>
<f:facet name="header">
<h:commandLink action="">
<h:outputText value="Código"/>
</h:commandLink>

</f:facet>
<h:commandLink action="#{cidade.altera}">
<h:outputText value="#{cid.Codcidade}"/>
<f:param name="codigo" value="#{cid.CodCidade}"
</h:commandLink>


</h:column>

<h:column>
<f:facet name="header">
<h:commandLink value="Descrição"/>
</f:facet>
<h:outputText value="#{cid.Descricao}"/>
</h:column>

</h:dataTable>



ERRO:

Can't set managed bean property: 'codigo'.


não entendo pq dá isso ...qual é o erro?

valeu
t+

 
Índice dos Fóruns » Desenvolvimento Web
Ir para:   
Powered by JForum 2.1.8 © JForum Team