Meu projeto usa struts 1.2, criei todas as Action mas eu acho que ta muito porco, por que está estruturado da seguinte maneira:
É possível criar uma única Action, tipo MendigoAction e nela ter todos os métodos de inserir mas sem precisar passar um parâmetro na URL? Como ficar o struts-config.xml?
1° - Estender a classe Action e no execute fazer as condições necessárias através de um parâmetro, esse parâmetro não precisa estar na url pode ser um campo hidden via form post…
2° - Estender a classe DispatchAction e passar um parâmetro com o nome do método que vc quer acessar, precisa acrescentar o atributo parameter no actionmapping do struts.config…
3° - Estender a classe LookupDispatchAction e sobrescrever o método getKeyMethodMap onde retorna um map que a key é o nome da ação e o value é o nome do método, tanb precisa acrescentar o atributo parameter no actionmapping do struts.config…
psandrelli
O ideal é isso, uma única Action com todos métodos.
Você pode setar a ação via JavaScript, vc configura qual será seu parâmetro de ação no struts-config.
Na sua Action, vc tem por exemplo o método “insere”, no seu jsp, vc seta o parâmetro “acao” do seu form com esse nome. Então ele entra no “insere” de sua Action.
Até mais.
M
mendigosujo
rodrigo_corinthians:
Existem 3 opções:
1° - Estender a classe Action e no execute fazer as condições necessárias através de um parâmetro, esse parâmetro não precisa estar na url pode ser um campo hidden via form post…
2° - Estender a classe DispatchAction e passar um parâmetro com o nome do método que vc quer acessar, precisa acrescentar o atributo parameter no actionmapping do struts.config…
3° - Estender a classe LookupDispatchAction e sobrescrever o método getKeyMethodMap onde retorna um map que a key é o nome da ação e o value é o nome do método, tanb precisa acrescentar o atributo parameter no actionmapping do struts.config…
De todas que eu li, a melhor seria a Dispatch né? Pq a Lookup eu iria precisar setar um message key na jsp, estou certo?
Mas na DispatchAction vou precisar passar um parâmetro também, não tem como passar o parâmetro sem ser na URL?
rodrigo_corinthians
Bom as 3 fazem a mesma coisa de formas diferentes mas fazem dai vai do seu gosto mas eu também prefiro a DispatchAction.
Faz assim cria uma classe abstrata estendendo DispatchAction e sobreescreve o método dispatchMethod, fica mais fácil pra controlar as exceções e tals…
Pra usar Lookup no javadoc mostra um exemplo usando os message key’s mas eu acho que não precisa, faz um teste ae e depois fala pra gente. rs
Sim como tinha dito antes esse parâmetro vc pode passar num campo hidden via form mesmo, não vai ficar exposto na url.
M
mendigosujo
To fazendo com o DispatchAction mas to levando pau dele rs
Se eu passar a acao na action, ele funciona mas eu não qro fazer isso, quero passar por hidden!!
Ta faltando alguma coisa?rs
rodrigo_corinthians
Bom a exceção está bem clara(NoSuchMethodException = não encontrou o método) mas na função javascript vc está passando um nome(cadastrar) que não existe, coloca o nome correto(inserir) que funciona…
M
mendigosujo
Nossa que vergonha :oops:
Eu estava crente que tinha mudado isso, eu realmente mudei, mas foi na JSP errada rsrs
Valeu amigo, agora ta bala o sistema
[]'s
M
mendigosujo
Mais uma pergunta: se eu não definir ação nenhuma, tem como passar uma ação padrão para a classe?
rodrigo_corinthians
Se não tiver ação nenhuma ele vai tentar acessar o execute() que na classe pai(ActionSupport) retorna uma String SUCCESS.
M
mendigosujo
Certo, mas vamos supor o seguinte cenário: tenho uma classe que é chamada quando acesso o link para ir para a página show.jsp. Vamos supor que a action chamada seja a MendigoShowAction, dentro dessa classe tem um método que passa um parâmetro para a show.jsp.
Favor desconsidera a minha última mensagem viajei grandão isso ae vale no Struts 2. :oops: Sexta de tarde é foda o cerébro já não funfa direito. hahaha
Isso se não passar o parâmetro sempre vai dar pau, vc tá estendendo a DispatchAction direto neh? Se sim acrescenta esses métodos na sua Action...