Boa tarde pessoal, bom estou trabalhando com struts 2 e tenho feito para fins de testes algumas actions. Minha dúvida é a seguinte, tenho a Classe Cursos, e as acções: cadastraCurso.action, editaCurso.action, excluiCurso.action, listaCurso.action
Bom além de gerar várias ações o arquivo struts.xml fica enorme. Seria recomendável colocar o cadastro,edição e exclusão em uma action somente?
Porque o listar prefiro separar por causa da paginação
Abraços
vc deve estar extendendo a sua classe para um Action, ao inves de vc extender a classe pra uma Action, extend pra DispatchAction
aih dpois eh so ir criando os metodos dentro dessa classe msm
[quote=trinka]vc deve estar extendendo a sua classe para um Action, ao inves de vc extender a classe pra uma Action, extend pra DispatchAction
aih dpois eh so ir criando os metodos dentro dessa classe msm[/quote]
que bagunça hein…
vou esclarecer o q eu quis dizer:
vc deve estar extendendo a sua classe CursoAction para Action
[code] public class CursoAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
....................................
}
}
[/code]
Ao invés disso extenda para DispatchAction,daí é só constriur seus metodos nessa classe ao inves de criar varias classes para isso
public class CursoAction extends DispatchAction {
public ActionForward incluir(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
.................
}
public ActionForward excluir(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
.................
}
}
PS.:espero que tenha melhorado a explicação acima
trinka o struts é o 2, então fica assim:
public class cadastraCurso extends ActionSupport {
private String nome;
private String descricao;
...
javabuntu vc disse que bagunça…, mas poderia explicar um método?
veja o exemplo da action cadastraCurso no struts.xml
<action name="cadastraCurso_*" method="{1}" class="ACTIONS.cadastraCurso">
<result name="input">/cadastraCurso.jsp</result>
</action>
<action name="cadastraCurso" class="ACTIONS.cadastraCurso">
<result name="success">/cadastraCurso.jsp</result>
<result name="input">/cadastraCurso.jsp</result>
<result name="error">/cadastraCurso.jsp</result>
</action>
O a action cadastraCurso_*" é para entrar no forumlário sem fazer a validação, mas se eu colocar as outras ações na mesma action nao tenho ideia de como entrar a peimeira vez no form sem validar
Abraços
Eu agruparia as classes por CRUD´s e em namespaces diferentes, por exemplo…
Cara eu fz o seguinte criei pacotes para dividir:
ACTIONS.Curso
ACTIONS.Disicplina
seria isso?
Outra coisa eu uso actions em todo o site? mesmo em páginas sem formulario como na index?
Estou fazendo assim: no index.jsp redireciono para index.action, onde tenho um bean que pego os dados necessários, porque se usar direto o jsp, os beans funcionam, mas o properties não muda quando mudo o locate, ele so altera usando action.
é correto usar action sem ser para formulários?
abraços
claro!
Olá tudo jóia, você pode colocar todas as ações em uma Action sim, desta forma:
Exemplo: //STRUTS 2
no form fica assim:
<s:form action=“pessoa!insertPessoa”>
</s:form>
//sendo “pessoa” a action que você deseja atingir e depois do “!” o nome do método.
no struts.xml
suaPagina.jsp
onde o struts faz o split no nome da Action no “!” pegando o nome do método que ven no local do “". É especificado pelo atributo method="{1}" a posição ele vai pegar do split (“0” antes do “!” e “1” depois do “!”), a parte 1 do split ou seja o que vem depois do “!” pegando o nome do method (que ven no local do "”), a única desvantagem é que você expõe o nome real no método no formulário.
//Método na Classe Action
public void insertPessoa(){
}
para pular a validação a primeira vez utilize uma annotations em cima do método ou no struts.xml
colocando o nome dos métodos que não deseja que passe na validação
@SkipValidation
public void insertPessoa(){
}
input,back,cancel,Obs.: Há também outras formas diferentes no struts 2 de você fazer estas mesmas coisa que foi mostrada acima.
Diego Calazans