Carregar combo (select) no struts 2 sem entrar na Action.  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
edysnipes
JavaEvangelist

Membro desde: 18/01/2007 19:24:05
Mensagens: 367
Localização: Brasília - DF
Offline

Senhores boa noite.

Sei que no JSF se eu tenho um select e seto a lista como um método do bean esse select é carregado normalmente.

Agora no struts dois não é bem assim.

Para conseguir carregar um select de cidades, por exemplo, eu tenho que colocar no link de acesso à essa página algo como acao!metodoAcao.action que carrega as cidades e mostra tudo na tela.

A pergunta é se é mesmo necessário passar pela action só para carregar esse select?

Aguardo resposta.

"Transformem os seus arados em espadas e das suas foices façam lanças, diga o fraco: Eu sou forte." (Joel 3.10)
[WWW] [MSN]
jyoshiriro
Virtual Machine Man
[Avatar]

Membro desde: 17/06/2009 14:14:39
Mensagens: 587
Offline

Amigo, se não quiser fazer nenhuma POG (entenda-se Scriptlet) é necessário passar por uma Action, sim.

Mas você não precisa criar outro mapeamento ou método específico pra isso. Use um getter público que retorne a coleção que deseja que funciona tranquilo.

José Yoshiriro Ajisaka Ramos

OCUP Fundamental / SCJP 6 / SCWCD 5 / SCBCD 5
[Email] [WWW]
edysnipes
JavaEvangelist

Membro desde: 18/01/2007 19:24:05
Mensagens: 367
Localização: Brasília - DF
Offline

O problema, se é que não existe algo que resolva, é que no método getListaCidades() que retorna a lista de cidades eu teria que retornar uma string que seria o direcionamento no struts.xml para a página específica. Aí o get deixaria de ser um List<Cidades> getListaCidades() para ser String getListaCidades(). Tem como contornar isso? E o uso de POG é uma solução ruim?

Agradeço a ajuda.

"Transformem os seus arados em espadas e das suas foices façam lanças, diga o fraco: Eu sou forte." (Joel 3.10)
[WWW] [MSN]
jyoshiriro
Virtual Machine Man
[Avatar]

Membro desde: 17/06/2009 14:14:39
Mensagens: 587
Offline

Amigo, desculpe, mas não entendi o que você quis dizer ^^'

José Yoshiriro Ajisaka Ramos

OCUP Fundamental / SCJP 6 / SCWCD 5 / SCBCD 5
[Email] [WWW]
edysnipes
JavaEvangelist

Membro desde: 18/01/2007 19:24:05
Mensagens: 367
Localização: Brasília - DF
Offline

Foi mal vou reformular.

É que no Struts tenho que tem um método que retorne uma String que, dependendo da configuração do struts.xml, direciona para uma página qualquer.

Ex:


Quando você diz:


Mas você não precisa criar outro mapeamento ou método específico pra isso. Use um getter público que retorne a coleção que deseja que funciona tranquilo.


Eu entendi que era para usar o get public da variável listaCidades.


Para eu colocar no meu form que chama a página que contém o select de cidades eu não poderei utilizar o método acima pois tenho que retornar uma string para ir para a página que utiliza essa lista. Por isso tenho que ter um método tipo carregaFormulario() que retorne uma string para a página que eu queira.

Entendeu?

Obrigado.

This message was edited 1 time. Last update was at 29/11/2010 23:29:07


"Transformem os seus arados em espadas e das suas foices façam lanças, diga o fraco: Eu sou forte." (Joel 3.10)
[WWW] [MSN]
jyoshiriro
Virtual Machine Man
[Avatar]

Membro desde: 17/06/2009 14:14:39
Mensagens: 587
Offline

Amigo, insisto que o get público resolve teu problema. Já trabalhei em 4 projetos com Strust2 e já ministrei vários cursos desse framework. Todos os getters públicos da sua Actions são acessíveis como se fossem atributos de requisição em seu JSP, entendeu? Nisso o Struts2 lembra um Managed Bean do JSF.

José Yoshiriro Ajisaka Ramos

OCUP Fundamental / SCJP 6 / SCWCD 5 / SCBCD 5
[Email] [WWW]
edysnipes
JavaEvangelist

Membro desde: 18/01/2007 19:24:05
Mensagens: 367
Localização: Brasília - DF
Offline

jyoshiriro me desculpe aí mas ainda não entendi como o get publico poderia resolver meu problema.

Tenho um menu que chama uma página jsp para pesquisa.



atualmente esse link chama um método da action que retorna uma string que direciona para a pagina que tem o formulário para pesquisa. Isso somente para carregar o select. So pelo fato de passar na action a lista listaAreas já está preenchida.



Agora pergunto (novamente desculpas) onde eu poderia chamar o metodo getListaAreas para resolver esse problema?

Se puder passar o seu msn explico melhor a situação. Pelo jeito tu é o cara o struts 2 e sua ajuda será muito importante.

"Transformem os seus arados em espadas e das suas foices façam lanças, diga o fraco: Eu sou forte." (Joel 3.10)
[WWW] [MSN]
jyoshiriro
Virtual Machine Man
[Avatar]

Membro desde: 17/06/2009 14:14:39
Mensagens: 587
Offline

Olha só, não quie ser pedante ou o "sabe tudo". Desculpe se pareceu isso. Apenas quis passar segurança na minha resposta, ok?

Veja este exemplo:

Action:


Url para chamar: salvar-bairro!input (assim o método execute é ignorado e o Struts2 "sabe" que você quer ir para uma entrada.

No JSP (salvar-cidade.jsp, se quiser aproveitar a convenção e dispensar XML e anotação):



Mesmo depois da execução, na chamada do execute, pode ocorrer um erro e você ser redirecionado novamente para o mesmo JSP. Mesmo assim o getter de Cidades resolve teu problema.

Espero ter ajudado.

José Yoshiriro Ajisaka Ramos

OCUP Fundamental / SCJP 6 / SCWCD 5 / SCBCD 5
[Email] [WWW]
edysnipes
JavaEvangelist

Membro desde: 18/01/2007 19:24:05
Mensagens: 367
Localização: Brasília - DF
Offline

Mas como faço isso de uma url em outra jsp? Como o método getCidades sabe que tem que ir para a página x.jsp?
Se puder implementar isso utilizando meu exemplos acima.

Tranquilo, so quero entender essa porra.


Abraço.

"Transformem os seus arados em espadas e das suas foices façam lanças, diga o fraco: Eu sou forte." (Joel 3.10)
[WWW] [MSN]
edysnipes
JavaEvangelist

Membro desde: 18/01/2007 19:24:05
Mensagens: 367
Localização: Brasília - DF
Offline

É tipo igual ao VRaptor?

Aki


No JSP (salvar-cidade.jsp, se quiser aproveitar a convenção e dispensar XML e anotação):


Utiliza o nome da classe para direcionar para o jsp?

"Transformem os seus arados em espadas e das suas foices façam lanças, diga o fraco: Eu sou forte." (Joel 3.10)
[WWW] [MSN]
jyoshiriro
Virtual Machine Man
[Avatar]

Membro desde: 17/06/2009 14:14:39
Mensagens: 587
Offline

Não é o Struts 2 que é igual o VRaptor e sim o contrário (eu sei, dá no mesmo, to querendo dizer que o Struts2 tinha isso há mais tempo).

O getCidades não encaminha pra lugar nenhum! O Struts2 mapea automaticamete o "salvar-cidade.jsp" para qualquer retorno que você der no método execute. Os getters públicos só possibilitam o JSP de resultado ter acesso a objetos dinâmicos.

José Yoshiriro Ajisaka Ramos

OCUP Fundamental / SCJP 6 / SCWCD 5 / SCBCD 5
[Email] [WWW]
edysnipes
JavaEvangelist

Membro desde: 18/01/2007 19:24:05
Mensagens: 367
Localização: Brasília - DF
Offline

jyoshiriro consegui resolver o problema que era não passar por um método para carregar meus selects.

Agora surgiram outra dúvidas.

Minha classe que interage com as jsp chama-se PNRAction porém não consegui utilizar pnr-action na chamada do formulário.

Ex:



Outra coisa e se eu fosse utilizar outro retorno personalizado para o método? Tipo pnr-Action!desocupar e mapear isso no struts.xml não funcionou aki comigo, ele procurou por um método chama desocupar na action.

Já resolvi só para tirar essas dúvidas novas.

"Transformem os seus arados em espadas e das suas foices façam lanças, diga o fraco: Eu sou forte." (Joel 3.10)
[WWW] [MSN]
jyoshiriro
Virtual Machine Man
[Avatar]

Membro desde: 17/06/2009 14:14:39
Mensagens: 587
Offline

Amigo, nunca deve-se chamar "!input" num formulário. Esse esquema de "inpuit" é para vocE^chegar no JSP de formulário sem executar o método principal de sua Action. No atributo action do seu form use o mapeamento sem "!input" no final, ok?

José Yoshiriro Ajisaka Ramos

OCUP Fundamental / SCJP 6 / SCWCD 5 / SCBCD 5
[Email] [WWW]
edysnipes
JavaEvangelist

Membro desde: 18/01/2007 19:24:05
Mensagens: 367
Localização: Brasília - DF
Offline

Está ficando cada vez mais obscuro. Pena que estou sem tempo algum para estudar no momento. Tenho que me virar com ajuda de vocês.

Vou explicar a situação toda porque sinceramente não entendi nada do que você está tentando me ensinar.

Tenho um jsp que lista todas as opções de funcionalidades em um determinado módulo de um projeto.



O Link acima envia o usuário para uma tela que tem um select que deve estar preenchido com algumas opções para seleção.



Minha dúvida era se tinha alguma maneira (Como funciona no JSF) de listar esse <s:select> sem passar pela Action. Essa dúvida o amigo jyoshiriro respondeu.


Amigo, se não quiser fazer nenhuma POG (entenda-se Scriptlet) é necessário passar por uma Action, sim.


E ainda disse que eu não precisava de um método específico somente para passar pela action e retornar para a jsp com o select populado.

Minha Action:



E para solucionar na marra escrevia um método tipo:



Isso só para passar pela Action e preencher a listaAreas.

Agora jyoshiriro eu não entendi muito bem o que fazer para não precisar passar por um método. Agradeço sua paciencia e aguardo sua ajuda.

This message was edited 2 times. Last update was at 01/12/2010 21:18:19


"Transformem os seus arados em espadas e das suas foices façam lanças, diga o fraco: Eu sou forte." (Joel 3.10)
[WWW] [MSN]
edysnipes
JavaEvangelist

Membro desde: 18/01/2007 19:24:05
Mensagens: 367
Localização: Brasília - DF
Offline

Parei um pouco de trabalhar com Struts 2 mais essa dúvida em particular gostaria que algum santo me ajudasse a entender.

"Transformem os seus arados em espadas e das suas foices façam lanças, diga o fraco: Eu sou forte." (Joel 3.10)
[WWW] [MSN]
 
Índice dos Fóruns » Desenvolvimento Web
Ir para:   
Powered by JForum 2.1.8 © JForum Team