JSF: Como obter o componente a partir do qual é chamada a propriedade do rendered
13 respostas
Rodrigo_Manhaes
Bom dia!
Estou tentando resolver um problema em JSF e uma solução simples e limpa seria se eu pudesse, no getter da propriedade indicada no atributo rendered de um <h:commandLink>, identificar o link que disparou a chamada ao getter.
Não entendi exatamente sua dúvida. Mas talvez no context, no request vc tenha alguma solução. Por exemplo, no HttpServletRequest, tem uns métodos como path, URL que foi requerida, etc. No ViewRoot, são informações mais “JSF”, então sei lá…
Quando for o momento de o JSF renderizar o componente, o método isOk() será executado no managed bean. A minha pergunta é se existe possibilidade de, no método bean.isOk(), eu conseguir obter o UICommand referente ao <h:commandLink> em questão (imagine que eu tenho vários command links, todos com rendered="#{bean.ok}" e quero saber de qual veio a chamada, pois a resposta (true ou false) depende disto.
under_fire
Rodrigo Manhães:
Olá Cintia!
Obrigado pela atenção. Vou explicar com mais detalhes.
Quando for o momento de o JSF renderizar o componente, o método isOk() será executado no managed bean. A minha pergunta é se existe possibilidade de, no método bean.isOk(), eu conseguir obter o UICommand referente ao <h:commandLink> em questão (imagine que eu tenho vários command links, todos com rendered="#{bean.ok}" e quero saber de qual veio a chamada, pois a resposta (true ou false) depende disto.
Eu to procurando isso a um tempão …
Isso seria muito show…
Se tivesse algum modo pratico sem te que implementar um biding… do componente…
CintiaDR
Rodrigo Manhães:
Olá Cintia!
Obrigado pela atenção. Vou explicar com mais detalhes.
Quando for o momento de o JSF renderizar o componente, o método isOk() será executado no managed bean. A minha pergunta é se existe possibilidade de, no método bean.isOk(), eu conseguir obter o UICommand referente ao <h:commandLink> em questão (imagine que eu tenho vários command links, todos com rendered="#{bean.ok}" e quero saber de qual veio a chamada, pois a resposta (true ou false) depende disto.
Não, não conheço…
R
rogeriorobetti
Rodrigo, se tiver encontrado uma solução “bonita” ou não, por favor poste, pois estou com o mesmo problema.
desde já agradeço.
fabio.massa
Rodrigo,
Não sei se é o que precisa, mas se você criar uma propriedade no seu bean do tipo “HtmlCommandLink” e der um binding no seu “commandLink”, você consegue pegar o id desse link quando o método bean.isOk() for acionada.
Abraços,
javax.skol
fabio.massa:
Rodrigo,
Não sei se é o que precisa, mas se você criar uma propriedade no seu bean do tipo “HtmlCommandLink” e der um binding no seu “commandLink”, você consegue pegar o id desse link quando o método bean.isOk() for acionada.
Abraços,
How about <h:inputHidden name=“formOk” value=“veioDoFormOK” /> !??! e na action vc pegaria pelo nam.
é “deselegante” mais acho que funcionaria…
=]
R
rogeriorobetti
Fabio, vc poderia ser mais claro na solução que propos ? Se puder postar um trecho de código, ajudaria baestante… :lol:
Dessa forma você está linkando o seu componente no seu Bean ao componente no Jsf, tudo que for feito em um reflete no outro.
vanilton.coelho
Mais ai dependendo da quantidade de componentes, teriam muitos e muitos bindings.
fabio.massa
rogeriorobetti é isso mesmo que o maurenginaldo postou, valeu marenginaldo!
alpharagga qual o problema de ter muitos bindings?, estou lhe questionando pois estou estudando JSF, apesar de encontrarmos muitas coisa sobre, é sempre bom aprender mais. Se puder esclarecer essa dúvida eu agradeço muito.
Abraços,
vanilton.coelho
Se a quantidade de páginas sempre aumentar, consequentemente a quantidade de componentes que precisam do bindings para que esse esquema funcione??? como fica nesse caso??? teria que ser algo que fosse transparente para o managed bean.
maurenginaldo
Não vejo problema para esse tipo de solução, nessa situação para se ter controle do componente do lado do bean a forma de resolver é essa.