Loading ...
Sorry, an error occurred while loading the content.

Re: [riojug] Quebrar o struts-config

Expand Messages
  • Conrad Peres
    Antonio, Teria como dar um exemplo prático de uma inclusão exclusão alteração e list no mesmo action, e se possível como o struts-config.xml ficaria, ou
    Message 1 of 13 , Aug 2, 2006
    • 0 Attachment
      Antonio,


      Teria como dar um exemplo prático de uma inclusão exclusão  alteração e list no mesmo action, e se possível como o struts-config.xml ficaria, ou pelo menos um site que tenha um exemplo prático que explique essa funcionalidade.


      Desde já agradeço
      Conrad Peres.

      ----- Original Message ----
      From: Antonio Carlos de Souza <ac.desouza@...>
      To: riojug@yahoogroups.com
      Sent: Wednesday, August 2, 2006 11:38:09 AM
      Subject: Re: [riojug] Quebrar o struts-config

      Conrad,

          Na DispatchAction você coloca todo o comportamento de uma entidade em uma mesma Action.
          Imagina uma cadastro de Clientes. Usando a DispatchAction vc coloca os métodos de cadastrar, alterar, excluir e listar em uma mesma Action.
          Para isso funcionar, além de extender de DispatchAction é necessãrio colocar um atributo a mais no struts-config, quando vc vai declarar a action. Este atributo indica o nome de um parâmetro, que será posto na sua página, contendo o nome do método - da sua DispatchAction - que o struts deve executar ao dar o submit.

      []s,
      AC

      On 8/1/06, Conrad Peres wrote:
      [...]


    • Antonio Carlos de Souza
      Conrad, Quanto ao struts-config, sugiro fortemente que seja gerado pelo XDoclet. Mas a diferença para o que você mapeia hoje é o atributo parameter. O valor
      Message 2 of 13 , Aug 2, 2006
      • 0 Attachment
        Conrad,

            Quanto ao struts-config, sugiro fortemente que seja gerado pelo XDoclet. Mas a diferença para o que você mapeia hoje é o atributo parameter. O valor deste atributo, do elemento action, irá conter o nome de uma parâmetro do request. Esse parâmetro conterá o nome do método, da sua DispatchAction, que deve ser chamado.

            Quanto a um site com exemplo:
        http://www.husted.com/struts/tips/002.html

        []s,
        AC

        P.S. 01: O nome do método que salva um cliente novo não é recomendado. Particularmente eu prefiro algo como insert. Não usei, neste exemplo, para mostrar que não existe nenhuma limitação quanto ao nome do método que será usado.



        A DispatchAction:

        -------------------------------------------------------------------------------------------
        /**
         * Representa as ações do cadastro de filiais.
         *
         * @...
         *         name = "clienteForm"
         *         path="/action/cliente"
         *         parameter="metodoNaAction"
         *         scope = "request"
         * @ struts.action-forward name="cadastrar" path="/jsp/cliente/cadastrar.do"
         * @...-forward name="listar" path="/jsp/cliente/listar.do"
         */

        public class ClienteAction extends DispatchAction {
           
            public ActionForward inserirClienteNovo(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
                //Código que chama a camada de modelo para salvar um cliente
            }
            public ActionForward listar(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
                //Código que chama a camada de modelo para listar os clientes cadastrados e colocar um List no request
            }
            public ActionForward alterar(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
                //Código que chama a camada de modelo para alterar um cliente
            }
            public ActionForward excluir(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
                //Código que chama a camada de modelo para excluir um cliente
            }
        }
        -------------------------------------------------------------------------------------------

        O ActionForm:
        -------------------------------------------------------------------------------------------
        /**
         * Representa os atributos da página de cadastro do cliente
         *
         * @... name="clienteForm"
         */
        public class CidadeForm extends ActionForm {
            private Cliente cliente;
           
            public Cliente getCliente(){
                return this.cliente;
            }
           
            public void setCliente(Cliente cliente){
                this.cliente = cliente;
            }
        }
        -------------------------------------------------------------------------------------------

        A página jsp que usa isso:
        -------------------------------------------------------------------------------------------
        <html>
            <body>
                <html:form action="/action/cliente" target="_self">
                    Nome do cliente: <html:text property="cliente.nome"/>
                    <html:submit property="metodoDaAction" value="inserirClienteNovo"/>
                </html:form>
            </body>
        </html>
        -------------------------------------------------------------------------------------------
      • Bruno Carvalho
        Antonio, O meu projeto esta exatamente desta forma, eu passo os métodos como parametro para a Action, e depois trato a persistencia com hibernate. Mais minha
        Message 3 of 13 , Aug 3, 2006
        • 0 Attachment
          Antonio,

          O meu projeto esta exatamente desta forma, eu passo os métodos como parametro para a Action, e depois trato a persistencia com hibernate. Mais minha dúvida agora é a seguinte, eu entendi como usar XDoclet na action agora para ser gerado o struts-config.xml, eu preciso usar o Ant certo?



          On 8/2/06, Antonio Carlos de Souza <ac.desouza@...> wrote:

          Conrad,

              Quanto ao struts-config, sugiro fortemente que seja gerado pelo XDoclet. Mas a diferença para o que você mapeia hoje é o atributo parameter. O valor deste atributo, do elemento action, irá conter o nome de uma parâmetro do request. Esse parâmetro conterá o nome do método, da sua DispatchAction, que deve ser chamado.

              Quanto a um site com exemplo:
          http://www.husted.com/struts/tips/002.html

          []s,
          AC

          P.S. 01: O nome do método que salva um cliente novo não é recomendado. Particularmente eu prefiro algo como insert. Não usei, neste exemplo, para mostrar que não existe nenhuma limitação quanto ao nome do método que será usado.



          A DispatchAction:

          -------------------------------------------------------------------------------------------
          /**
           * Representa as ações do cadastro de filiais.
           *
           * @...
           *         name = "clienteForm"
           *         path="/action/cliente"
           *         parameter="metodoNaAction"
           *         scope = "request"
           * @ struts.action-forward name="cadastrar" path="/jsp/cliente/cadastrar.do"
           * @...-forward name="listar" path="/jsp/cliente/listar.do"
           */

          public class ClienteAction extends DispatchAction {
             
              public ActionForward inserirClienteNovo(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
                  //Código que chama a camada de modelo para salvar um cliente
              }
              public ActionForward listar(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
                  //Código que chama a camada de modelo para listar os clientes cadastrados e colocar um List no request
              }
              public ActionForward alterar(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
                  //Código que chama a camada de modelo para alterar um cliente
              }
              public ActionForward excluir(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
                  //Código que chama a camada de modelo para excluir um cliente
              }
          }
          -------------------------------------------------------------------------------------------

          O ActionForm:
          -------------------------------------------------------------------------------------------
          /**
           * Representa os atributos da página de cadastro do cliente
           *
           * @... name="clienteForm"


           */
          public class CidadeForm extends ActionForm {
              private Cliente cliente;
             
              public Cliente getCliente(){
                  return this.cliente;
              }
             
              public void setCliente(Cliente cliente){
                  this.cliente = cliente;
              }
          }
          -------------------------------------------------------------------------------------------

          A página jsp que usa isso:
          -------------------------------------------------------------------------------------------
          <html>
              <body>
                  <html:form action="/action/cliente" target="_self">
                      Nome do cliente: <html:text property="cliente.nome"/>
                      <html:submit property="metodoDaAction" value="inserirClienteNovo"/>
                  </html:form>
              </body>
          </html>
          -------------------------------------------------------------------------------------------


        • Antonio Carlos de Souza
          Bruno, Precisa usar o Ant, sim. Eu costumo usar o JBossIDE para gerar os scripts Ant. Tem duas ferramentas muito boas: Packaging Configuration e XDoclet
          Message 4 of 13 , Aug 3, 2006
          • 0 Attachment
            Bruno,

                Precisa usar o Ant, sim. Eu costumo usar o JBossIDE para gerar os scripts Ant. Tem duas ferramentas muito boas:
            Packaging Configuration e XDoclet Configuration. Encontradas na propriedade de um projeto do Eclipse que possua o plugin JBossIDE instalado.

            []s,
            AC

            P.S.: Dá uma olhada se isso te ajuda....
            ----------------------------------------------------------------------------------------------------------------------------------------------------------------
            <target name="N65540" description="WEB">
                <taskdef name="webdoclet" classname="xdoclet.modules.web.WebDocletTask" classpathref="xdoclet.classpath"/>
                <webdoclet excludedTags="@version,@author,@todo"  destDir="build/descriptor"  mergeDir="src/resources/xdoclet merge"  verbose="true"  addedTags="@xdoclet-generated at ${TODAY},@copyright The XDoclet Team,@author XDoclet,@version ${version}" >
                    <fileset dir="src/java"  includes="**/*.java" >
                    </fileset>
                   
                    <deploymentdescriptor Servletspec="2.4"  xmlencoding="ISO-8859-1" ></deploymentdescriptor>
                   
                    <jsptaglib
                        Jspversion="1.2" 
                        shortname="nomedoseuprojeto"
                        uri="http://suaempresa.com.br/nomedoseuprojeto
                        filename="nomedoseuprojeto.tld" 
                        destDir="build/descriptor" >
                    </jsptaglib>
                   
                    <strutsconfigxml Version="1.2"  xmlencoding="ISO-8859-1" ></strutsconfigxml>
                </webdoclet>
            </target>
            ----------------------------------------------------------------------------------------------------------------------------------------------------------------

            On 8/3/06, Bruno Carvalho <br.carvalho@...> wrote:
            [...]
          • Magno Cavalcante
            O Struts-config.xml pode implementar o esquema de mapeamento para subprojetos. Assim você poderá ter um struts-config para cada módulo do seu projeto, a
            Message 5 of 13 , Aug 7, 2006
            • 0 Attachment
              O Struts-config.xml pode implementar o esquema de mapeamento para
              subprojetos. Assim você poderá ter um struts-config para cada módulo
              do seu projeto, a partir de um config principal, desde que todos eles
              estejam dentro do mesmo WEB-INF.

              Informações detalhadas sobre isso você pode obter dentro da
              documentação do próprio Struts em http://struts.apache.org

              --

              Atenciosamente,
              -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
              Magno Cavalcante
              Rio de Janeiro - RJ
              -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

              2006/7/31, Bruno Carvalho <br.carvalho@...>:
              > Amigos
              >
              > Estou criando um sistema usando struts e quebrei o struts-config para cada rotina, e como eu estou carregando cada um deles no init-param do web.xml, claro que pro meu sistema nao teria problema algum porque é pequeno, e estou fazendo a nível de estudo, mais para uma aplicação "grande" eu poderia ter algum problema de performance, ou memória já que estou carregando vários arquivos separados no init-param ?
              >
              > Obrigado a todos
              >
              > Bruno Carvalho
            Your message has been successfully submitted and would be delivered to recipients shortly.