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

manter os dados do livro na tela após execut ar o validate para um campo deixado em branco

Expand Messages
  • Mônica Bolsas da Rocha
    Faltou o trecho do struts-config.xml
    Message 1 of 11 , Jun 8, 2008
      Faltou o trecho do struts-config.xml
       
      <action path="/AlterarLivro"
               name="LivroAlteracaoActionForm"  type="controles.Actions.AlterarLivroAction"  
               input="/telaAlteracaoLivro.jsp" 
               scope="request" validate="true">   
               <forward name="livroAlterado" path="/telaConfirmacaoAlteracaoLivro.jsp"/>               
      </action>      
       
      Vlw.

      ---------- Forwarded message ----------
      From: Mônica Bolsas da Rocha <monicabolsasr@...>
      Date: 08/06/2008 19:17
      Subject: manter os dados do livro na tela após executar o validate para um campo deixado em branco
      To:

       
      Oi Pessoal,
       
      Tô com um probleminha na tela de alteração de livro com relação à execução do método validate do seu respectivo ActionForm.
       
      Seguinte: para testar o validate em LivroAlteracaoActionForm, dou submit na jsp, com os dados do livro para alteração, deixando um campo em branco. O validate é executado certinho para o campo não preenchido, exibindo no vetor de erros apenas o erro daquele campo não preenchido. Mas, "zera" todo formulário.
       
      No caso da inclusão, o validate do seu respectivo actionForm (LivroActionForm) não zera. Pq então tá zerando na alteração ??? Essa é a dúvida.
       
      Abaixo mostro os códigos da jsp da tela de alteração de livro e seu respectivo ActionForm.
       
      Em anexo seguem os jpgs das telas para entendimento do que está ocorrendo. Se alguém souber como me ajudar agradeço muito.
       
      --
      Abçs.
      Mônica.
       
      //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
      JSP da da Tela de Alteração de Livro

      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
         "http://www.w3.org/TR/html4/loose.dtd">
      <%@ page contentType="text/html" pageEncoding="UTF-8"%>
      <%@ taglib uri="/WEB-INF/struts-bean" prefix="bean" %>  
      <%@ taglib uri="/WEB-INF/struts-html" prefix="html" %>  
      <%@ taglib uri="/WEB-INF/struts-logic" prefix="logic" %>

      <jsp:useBean id="livro" scope="request" class="controles.ActionForms.LivroAlteracaoActionForm"/>

      <html>  
          <head>  
          <title><bean:message key="titulo.alteracao.livro"/></title>  
          </head>  
          <body>  
              <h1><bean:message key="cabecalho.alteracao.livro"/></h1>  
              <html:errors/><!--LISTA OS ERROS DE PREENCHIMENTO DOS CAMPOS -->
              <html:form action="/AlterarLivro.do" focus="isbn">   
                  <table>  
                      <tr>  
                          <td>Código:</td>
                          <td><bean:write name="livro" property="codigo"/></td>  
                      </tr>  
                      <tr>  
                          <td >ISBN:</td>  
                          <td><html:text name="livro" property="isbn"/></td>  
                      </tr>  
                      <tr>  
                          <td >Título:</td>  
                          <td><html:text name="livro" property="titulo"/></td>  
                      </tr>  
                      <tr>  
                          <td >Autor:</td>  
                          <td><html:text name="livro" property="autor"/></td>  
                      </tr>  
                      <tr>  
                          <td >Assunto:</td>  
                          <td><html:text name="livro" property="assunto"/></td>  
                      </tr>  
                      <tr>  
                          <td >Editora:</td>  
                          <td><html:text name="livro" property="editora"/></td>  
                      </tr>  
                      <tr>  
                          <td >Nº Edição:</td>  
                          <td><html:text name="livro" property="numEdicao"/></td>  
                      </tr>  
                      <tr>  
                          <td >Ano:</td>  
                          <td><html:text name="livro" property="ano"/></td>  
                      </tr>  
                      <tr>  
                          <td>Total de Páginas:</td>  
                          <td><html:text name="livro" property="qtdPaginas"/></td>  
                      </tr>
                      <tr>   
                          <td>Tipo de Mídia:</td>  
                          <td><html:text name="livro" property="tipoMidia"/></td>  
                      </tr>
                  </table>  
                  <html:submit><bean:message key="botao.sumit"/></html:submit>  
              </html:form>  
          </body>  
      </html>

      //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
      ActionForm da Tela de Alteração de Livro
       
      public class LivroAlteracaoActionForm extends org.apache.struts.action.ActionForm {
         
          private int    codigo;
          private int    isbn;
          private String titulo;
          private String autor;
          private String assunto;
          private String editora;
          private int    numEdicao;
          private int    ano;
          private int    qtdPaginas;
          private String tipoMidia;

          public int getCodigo() {
              return codigo;
          }

          public void setCodigo(int codigo) {
              this.codigo = codigo;
          }

          public int getIsbn() {
              return isbn;
          }

          public void setIsbn(int isbn) {
              this.isbn = isbn;
          }

          public String getTitulo() {
              return titulo;
          }

          public void setTitulo(String titulo) {
              this.titulo = titulo;
          }

          public String getAutor() {
              return autor;
          }

          public void setAutor(String autor) {
              this.autor = autor;
          }

          public String getAssunto() {
              return assunto;
          }

          public void setAssunto(String assunto) {
              this.assunto = assunto;
          }

          public String getEditora() {
              return editora;
          }

          public void setEditora(String editora) {
              this.editora = editora;
          }

          public int getNumEdicao() {
              return numEdicao;
          }

          public void setNumEdicao(int numEdicao) {
              this.numEdicao = numEdicao;
          }

          public int getAno() {
              return ano;
          }

          public void setAno(int ano) {
              this.ano = ano;
          }

          public int getQtdPaginas() {
              return qtdPaginas;
          }

          public void setQtdPaginas(int qtdPaginas) {
              this.qtdPaginas = qtdPaginas;
          }

          public String getTipoMidia() {
              return tipoMidia;
          }

          public void setTipoMidia(String tipoMidia) {
              this.tipoMidia = tipoMidia;
          }

          public LivroAlteracaoActionForm() {
             super();
             // TODO Auto-generated constructor stub
         }

         public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
             ActionErrors errors = new ActionErrors();
             if (getIsbn() == 0) {
                 errors.add("isbn", new ActionMessage("erro.inclusao.isbn"));
             }
             if (getTitulo() == null || getTitulo().length() < 1) {
                 errors.add("titulo", new ActionMessage("erro.inclusao.tituloLivro"));
             }
             if (getAutor() == null || getAutor().length() < 1) {
                 errors.add("autor", new ActionMessage("erro.inclusao.autor"));
             }
             if (getAssunto() == null || getAssunto().length() < 1) {
                 errors.add("assunto", new ActionMessage("erro.inclusao.assunto"));
             }
             if (getEditora() == null || getEditora().length() < 1) {
                 errors.add("editora", new ActionMessage("erro.inclusao.editoraLivro"));
             }
             if (getNumEdicao() == 0) {
                 errors.add("numEdicao", new ActionMessage("erro.inclusao.numEdicao"));
             }
             if (getAno() == 0) {
                 errors.add("ano", new ActionMessage("erro.inclusao.anoLivro"));
             }
             if (getQtdPaginas() == 0) {
                 errors.add("qtdPaginas", new ActionMessage("erro.inclusao.qtdPaginas"));
             }
             if (getTipoMidia() == null || getTipoMidia().length() < 1) {
                 errors.add("tipoMidia", new ActionMessage("erro.inclusao.tipoMidiaLivro"));
             }     
             return errors;
         }
      }




      --
      Abçs.
      Mônica.
    • Michel Antunes
      Mônica, Tente alterar o escopo da requisição para session . Poderia enviar a inclusão, a qual diz que funciona? [ ] s, Michel ... -- Mônica, Tente
      Message 2 of 11 , Jun 9, 2008
        Mônica,

        Tente alterar o escopo da requisição para "session". Poderia enviar a inclusão, a qual diz que funciona?

        [ ]'s,
        Michel

        2008/6/8 Mônica Bolsas da Rocha <monicabolsasr@...>:

        Faltou o trecho do struts-config.xml
         
        <action path="/AlterarLivro"
                 name="LivroAlteracaoActionForm"  type="controles.Actions.AlterarLivroAction"  
                 input="/telaAlteracaoLivro.jsp" 
                 scope="request" validate="true">   
                 <forward name="livroAlterado" path="/telaConfirmacaoAlteracaoLivro.jsp"/>               
        </action>      
         
        Vlw.


        ---------- Forwarded message ----------
        From: Mônica Bolsas da Rocha <monicabolsasr@...>
        Date: 08/06/2008 19:17
        Subject: manter os dados do livro na tela após executar o validate para um campo deixado em branco
        To:

         
        Oi Pessoal,
         
        Tô com um probleminha na tela de alteração de livro com relação à execução do método validate do seu respectivo ActionForm.
         
        Seguinte: para testar o validate em LivroAlteracaoActionForm, dou submit na jsp, com os dados do livro para alteração, deixando um campo em branco. O validate é executado certinho para o campo não preenchido, exibindo no vetor de erros apenas o erro daquele campo não preenchido. Mas, "zera" todo formulário.
         
        No caso da inclusão, o validate do seu respectivo actionForm (LivroActionForm) não zera. Pq então tá zerando na alteração ??? Essa é a dúvida.
         
        Abaixo mostro os códigos da jsp da tela de alteração de livro e seu respectivo ActionForm.
         
        Em anexo seguem os jpgs das telas para entendimento do que está ocorrendo. Se alguém souber como me ajudar agradeço muito.
         
        --
        Abçs.
        Mônica.
         
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        JSP da da Tela de Alteração de Livro

        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
           "http://www.w3.org/TR/html4/loose.dtd">
        <%@ page contentType="text/html" pageEncoding="UTF-8"%>
        <%@ taglib uri="/WEB-INF/struts-bean" prefix="bean" %>  
        <%@ taglib uri="/WEB-INF/struts-html" prefix="html" %>  
        <%@ taglib uri="/WEB-INF/struts-logic" prefix="logic" %>

        <jsp:useBean id="livro" scope="request" class="controles.ActionForms.LivroAlteracaoActionForm"/>

        <html>  
            <head>  
            <title><bean:message key="titulo.alteracao.livro"/></title>  
            </head>  
            <body>  
                <h1><bean:message key="cabecalho.alteracao.livro"/></h1>  
                <html:errors/><!--LISTA OS ERROS DE PREENCHIMENTO DOS CAMPOS -->
                <html:form action="/AlterarLivro.do" focus="isbn">   
                    <table>  
                        <tr>  
                            <td>Código:</td>
                            <td><bean:write name="livro" property="codigo"/></td>  
                        </tr>  
                        <tr>  
                            <td >ISBN:</td>  
                            <td><html:text name="livro" property="isbn"/></td>  
                        </tr>  
                        <tr>  
                            <td >Título:</td>  
                            <td><html:text name="livro" property="titulo"/></td>  
                        </tr>  
                        <tr>  
                            <td >Autor:</td>  
                            <td><html:text name="livro" property="autor"/></td>  
                        </tr>  
                        <tr>  
                            <td >Assunto:</td>  
                            <td><html:text name="livro" property="assunto"/></td>  
                        </tr>  
                        <tr>  
                            <td >Editora:</td>  
                            <td><html:text name="livro" property="editora"/></td>  
                        </tr>  
                        <tr>  
                            <td >Nº Edição:</td>  
                            <td><html:text name="livro" property="numEdicao"/></td>  
                        </tr>  
                        <tr>  
                            <td >Ano:</td>  
                            <td><html:text name="livro" property="ano"/></td>  
                        </tr>  
                        <tr>  
                            <td>Total de Páginas:</td>  
                            <td><html:text name="livro" property="qtdPaginas"/></td>  
                        </tr>
                        <tr>   
                            <td>Tipo de Mídia:</td>  
                            <td><html:text name="livro" property="tipoMidia"/></td>  
                        </tr>
                    </table>  
                    <html:submit><bean:message key="botao.sumit"/></html:submit>  
                </html:form>  
            </body>  
        </html>

        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ActionForm da Tela de Alteração de Livro
         
        public class LivroAlteracaoActionForm extends org.apache.struts.action.ActionForm {
           
            private int    codigo;
            private int    isbn;
            private String titulo;
            private String autor;
            private String assunto;
            private String editora;
            private int    numEdicao;
            private int    ano;
            private int    qtdPaginas;
            private String tipoMidia;

            public int getCodigo() {
                return codigo;
            }

            public void setCodigo(int codigo) {
                this.codigo = codigo;
            }

            public int getIsbn() {
                return isbn;
            }

            public void setIsbn(int isbn) {
                this.isbn = isbn;
            }

            public String getTitulo() {
                return titulo;
            }

            public void setTitulo(String titulo) {
                this.titulo = titulo;
            }

            public String getAutor() {
                return autor;
            }

            public void setAutor(String autor) {
                this.autor = autor;
            }

            public String getAssunto() {
                return assunto;
            }

            public void setAssunto(String assunto) {
                this.assunto = assunto;
            }

            public String getEditora() {
                return editora;
            }

            public void setEditora(String editora) {
                this.editora = editora;
            }

            public int getNumEdicao() {
                return numEdicao;
            }

            public void setNumEdicao(int numEdicao) {
                this.numEdicao = numEdicao;
            }

            public int getAno() {
                return ano;
            }

            public void setAno(int ano) {
                this.ano = ano;
            }

            public int getQtdPaginas() {
                return qtdPaginas;
            }

            public void setQtdPaginas(int qtdPaginas) {
                this.qtdPaginas = qtdPaginas;
            }

            public String getTipoMidia() {
                return tipoMidia;
            }

            public void setTipoMidia(String tipoMidia) {
                this.tipoMidia = tipoMidia;
            }

            public LivroAlteracaoActionForm() {
               super();
               // TODO Auto-generated constructor stub
           }

           public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
               ActionErrors errors = new ActionErrors();
               if (getIsbn() == 0) {
                   errors.add("isbn", new ActionMessage("erro.inclusao.isbn"));
               }
               if (getTitulo() == null || getTitulo().length() < 1) {
                   errors.add("titulo", new ActionMessage("erro.inclusao.tituloLivro"));
               }
               if (getAutor() == null || getAutor().length() < 1) {
                   errors.add("autor", new ActionMessage("erro.inclusao.autor"));
               }
               if (getAssunto() == null || getAssunto().length() < 1) {
                   errors.add("assunto", new ActionMessage("erro.inclusao.assunto"));
               }
               if (getEditora() == null || getEditora().length() < 1) {
                   errors.add("editora", new ActionMessage("erro.inclusao.editoraLivro"));
               }
               if (getNumEdicao() == 0) {
                   errors.add("numEdicao", new ActionMessage("erro.inclusao.numEdicao"));
               }
               if (getAno() == 0) {
                   errors.add("ano", new ActionMessage("erro.inclusao.anoLivro"));
               }
               if (getQtdPaginas() == 0) {
                   errors.add("qtdPaginas", new ActionMessage("erro.inclusao.qtdPaginas"));
               }
               if (getTipoMidia() == null || getTipoMidia().length() < 1) {
                   errors.add("tipoMidia", new ActionMessage("erro.inclusao.tipoMidiaLivro"));
               }     
               return errors;
           }
        }




        --
        Abçs.
        Mônica.



        --

      • Mônica Bolsas da Rocha
        Oi Michel, Não entendo muito esse negócio de session não. Se puder me explicar ... . E pode ficar à vontade prá alterar os códigos que vou te mandar ok
        Message 3 of 11 , Jun 9, 2008
          Oi Michel,
           
          Não entendo muito esse negócio de session não. Se puder me explicar ... . E pode ficar à vontade prá alterar os códigos que vou te mandar ok ???? Se vc não se importar, estou te mandando o zip com os códgos fonte das classes. Abaixo das explicações te explco a organização das pastas.
           
          rotina da inclusão:
           
          1 - telaInclusaoLivro.jsp chama a action IncluirLivro.do (IncluirLivroAction);
           
          2 - IncluirLivroAction captura os dados da jsp via LivroActionForm e o inclui através do método incluirLivro(Livro livro) contido na classe MidiaDAO;
           
          3 - após a inclusão é retornada a jsp telaConfirmacaoInclusaoLivro.jsp com os dados do livro incluído.
           
          OBS: a execução do método validate em LivroActionForm faz a validação direitinho na inclusão, deixando tudo preenchido, exceto por exemplo o campo deixado em branco ou com valor inválido e exibe o vetor de erro apenas com o campo nulo ou inválido. E não usei session para a inclusão.
           
          Na alteração, é praticamente a mesma rotina. Tanto que qdo o método validate do LivroAlteracaoActionFomrvalida todos os campos sem erro a alteração é concluída com sucesso.
           
          Conforme disse, segue em Anexo os códigos java do trabalho organizados nas seguintes pastas:
          configuracao - struts-config.xml e web.xml
          controles/ActionForms - Os ActionForms
          controles/Actions - as Actions
          entidades - as classes
           
          Se puder me ajudar, desde já te agradeço muito.
           
          --
          Abçs.
          Mônica.
           
          Em 09/06/08, Michel Antunes <antunesmichel@...> escreveu:

          Mônica,

          Tente alterar o escopo da requisição para "session". Poderia enviar a inclusão, a qual diz que funciona?

          [ ]'s,
          Michel

          2008/6/8 Mônica Bolsas da Rocha <monicabolsasr@...>:

          Faltou o trecho do struts-config.xml
           
          <action path="/AlterarLivro"
                   name="LivroAlteracaoActionForm"  type="controles.Actions.AlterarLivroAction"  
                   input="/telaAlteracaoLivro.jsp" 
                   scope="request" validate="true">   
                   <forward name="livroAlterado" path="/telaConfirmacaoAlteracaoLivro.jsp"/>               
          </action>      
           
          Vlw.


          ---------- Forwarded message ----------
          From: Mônica Bolsas da Rocha <monicabolsasr@...>
          Date: 08/06/2008 19:17
          Subject: manter os dados do livro na tela após executar o validate para um campo deixado em branco
          To:

           
          Oi Pessoal,
           
          Tô com um probleminha na tela de alteração de livro com relação à execução do método validate do seu respectivo ActionForm.
           
          Seguinte: para testar o validate em LivroAlteracaoActionForm, dou submit na jsp, com os dados do livro para alteração, deixando um campo em branco. O validate é executado certinho para o campo não preenchido, exibindo no vetor de erros apenas o erro daquele campo não preenchido. Mas, "zera" todo formulário.
           
          No caso da inclusão, o validate do seu respectivo actionForm (LivroActionForm) não zera. Pq então tá zerando na alteração ??? Essa é a dúvida.
           
          Abaixo mostro os códigos da jsp da tela de alteração de livro e seu respectivo ActionForm.
           
          Em anexo seguem os jpgs das telas para entendimento do que está ocorrendo. Se alguém souber como me ajudar agradeço muito.
           
          --
          Abçs.
          Mônica.
           
          //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
          JSP da da Tela de Alteração de Livro

          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
             "http://www.w3.org/TR/html4/loose.dtd">
          <%@ page contentType="text/html" pageEncoding="UTF-8"%>
          <%@ taglib uri="/WEB-INF/struts-bean" prefix="bean" %>  
          <%@ taglib uri="/WEB-INF/struts-html" prefix="html" %>  
          <%@ taglib uri="/WEB-INF/struts-logic" prefix="logic" %>

          <jsp:useBean id="livro" scope="request" class="controles.ActionForms.LivroAlteracaoActionForm"/>

          <html>  
              <head>  
              <title><bean:message key="titulo.alteracao.livro"/></title>  
              </head>  
              <body>  
                  <h1><bean:message key="cabecalho.alteracao.livro"/></h1>  
                  <html:errors/><!--LISTA OS ERROS DE PREENCHIMENTO DOS CAMPOS -->
                  <html:form action="/AlterarLivro.do" focus="isbn">   
                      <table>  
                          <tr>  
                              <td>Código:</td>
                              <td><bean:write name="livro" property="codigo"/></td>  
                          </tr>  
                          <tr>  
                              <td >ISBN:</td>  
                              <td><html:text name="livro" property="isbn"/></td>  
                          </tr>  
                          <tr>  
                              <td >Título:</td>  
                              <td><html:text name="livro" property="titulo"/></td>  
                          </tr>  
                          <tr>  
                              <td >Autor:</td>  
                              <td><html:text name="livro" property="autor"/></td>  
                          </tr>  
                          <tr>  
                              <td >Assunto:</td>  
                              <td><html:text name="livro" property="assunto"/></td>  
                          </tr>  
                          <tr>  
                              <td >Editora:</td>  
                              <td><html:text name="livro" property="editora"/></td>  
                          </tr>  
                          <tr>  
                              <td >Nº Edição:</td>  
                              <td><html:text name="livro" property="numEdicao"/></td>  
                          </tr>  
                          <tr>  
                              <td >Ano:</td>  
                              <td><html:text name="livro" property="ano"/></td>  
                          </tr>  
                          <tr>  
                              <td>Total de Páginas:</td>  
                              <td><html:text name="livro" property="qtdPaginas"/></td>  
                          </tr>
                          <tr>   
                              <td>Tipo de Mídia:</td>  
                              <td><html:text name="livro" property="tipoMidia"/></td>  
                          </tr>
                      </table>  
                      <html:submit><bean:message key="botao.sumit"/></html:submit>  
                  </html:form>  
              </body>  
          </html>

          //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
          ActionForm da Tela de Alteração de Livro
           
          public class LivroAlteracaoActionForm extends org.apache.struts.action.ActionForm {
             
              private int    codigo;
              private int    isbn;
              private String titulo;
              private String autor;
              private String assunto;
              private String editora;
              private int    numEdicao;
              private int    ano;
              private int    qtdPaginas;
              private String tipoMidia;

              public int getCodigo() {
                  return codigo;
              }

              public void setCodigo(int codigo) {
                  this.codigo = codigo;
              }

              public int getIsbn() {
                  return isbn;
              }

              public void setIsbn(int isbn) {
                  this.isbn = isbn;
              }

              public String getTitulo() {
                  return titulo;
              }

              public void setTitulo(String titulo) {
                  this.titulo = titulo;
              }

              public String getAutor() {
                  return autor;
              }

              public void setAutor(String autor) {
                  this.autor = autor;
              }

              public String getAssunto() {
                  return assunto;
              }

              public void setAssunto(String assunto) {
                  this.assunto = assunto;
              }

              public String getEditora() {
                  return editora;
              }

              public void setEditora(String editora) {
                  this.editora = editora;
              }

              public int getNumEdicao() {
                  return numEdicao;
              }

              public void setNumEdicao(int numEdicao) {
                  this.numEdicao = numEdicao;
              }

              public int getAno() {
                  return ano;
              }

              public void setAno(int ano) {
                  this.ano = ano;
              }

              public int getQtdPaginas() {
                  return qtdPaginas;
              }

              public void setQtdPaginas(int qtdPaginas) {
                  this.qtdPaginas = qtdPaginas;
              }

              public String getTipoMidia() {
                  return tipoMidia;
              }

              public void setTipoMidia(String tipoMidia) {
                  this.tipoMidia = tipoMidia;
              }

              public LivroAlteracaoActionForm() {
                 super();
                 // TODO Auto-generated constructor stub
             }

             public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
                 ActionErrors errors = new ActionErrors();
                 if (getIsbn() == 0) {
                     errors.add("isbn", new ActionMessage("erro.inclusao.isbn"));
                 }
                 if (getTitulo() == null || getTitulo().length() < 1) {
                     errors.add("titulo", new ActionMessage("erro.inclusao.tituloLivro"));
                 }
                 if (getAutor() == null || getAutor().length() < 1) {
                     errors.add("autor", new ActionMessage("erro.inclusao.autor"));
                 }
                 if (getAssunto() == null || getAssunto().length() < 1) {
                     errors.add("assunto", new ActionMessage("erro.inclusao.assunto"));
                 }
                 if (getEditora() == null || getEditora().length() < 1) {
                     errors.add("editora", new ActionMessage("erro.inclusao.editoraLivro"));
                 }
                 if (getNumEdicao() == 0) {
                     errors.add("numEdicao", new ActionMessage("erro.inclusao.numEdicao"));
                 }
                 if (getAno() == 0) {
                     errors.add("ano", new ActionMessage("erro.inclusao.anoLivro"));
                 }
                 if (getQtdPaginas() == 0) {
                     errors.add("qtdPaginas", new ActionMessage("erro.inclusao.qtdPaginas"));
                 }
                 if (getTipoMidia() == null || getTipoMidia().length() < 1) {
                     errors.add("tipoMidia", new ActionMessage("erro.inclusao.tipoMidiaLivro"));
                 }     
                 return errors;
             }
          }




           
          --
          Abçs.
          Mônica.



          --




        • Michel Antunes
          Monica, no email anterior voce mostrou este trecho abaixo: ...
          Message 4 of 11 , Jun 10, 2008
            Monica, no email anterior voce mostrou este trecho abaixo:

            "...
               <action path="/AlterarLivro"
                     name="LivroAlteracaoActionForm"  type="controles.Actions.AlterarLivroAction"  
                     input="/telaAlteracaoLivro.jsp" 
                     scope="request" validate="true">   
                     <forward name="livroAlterado" path="/telaConfirmacaoAlteracaoLivro.jsp"/>               
               </action>
            ..."

            O problema é que o formulário "
            LivroAlteracaoActionForm" que está usando não existe, tente usar o "LivroActionForm".

            [ ]'s,
            Michel

            2008/6/9 Mônica Bolsas da Rocha <monicabolsasr@...>:

            Oi Michel,
             
            Não entendo muito esse negócio de session não. Se puder me explicar ... . E pode ficar à vontade prá alterar os códigos que vou te mandar ok ???? Se vc não se importar, estou te mandando o zip com os códgos fonte das classes. Abaixo das explicações te explco a organização das pastas.
             
            rotina da inclusão:
             
            1 - telaInclusaoLivro.jsp chama a action IncluirLivro.do (IncluirLivroAction);
             
            2 - IncluirLivroAction captura os dados da jsp via LivroActionForm e o inclui através do método incluirLivro(Livro livro) contido na classe MidiaDAO;
             
            3 - após a inclusão é retornada a jsp telaConfirmacaoInclusaoLivro.jsp com os dados do livro incluído.
             
            OBS: a execução do método validate em LivroActionForm faz a validação direitinho na inclusão, deixando tudo preenchido, exceto por exemplo o campo deixado em branco ou com valor inválido e exibe o vetor de erro apenas com o campo nulo ou inválido. E não usei session para a inclusão.
             
            Na alteração, é praticamente a mesma rotina. Tanto que qdo o método validate do LivroAlteracaoActionFomrvalida todos os campos sem erro a alteração é concluída com sucesso.
             
            Conforme disse, segue em Anexo os códigos java do trabalho organizados nas seguintes pastas:
            configuracao - struts-config.xml e web.xml
            controles/ActionForms - Os ActionForms
            controles/Actions - as Actions
            entidades - as classes
             
            Se puder me ajudar, desde já te agradeço muito.
             
            --
            Abçs.
            Mônica.
             
            Em 09/06/08, Michel Antunes <antunesmichel@...> escreveu:

            Mônica,

            Tente alterar o escopo da requisição para "session". Poderia enviar a inclusão, a qual diz que funciona?

            [ ]'s,
            Michel

            2008/6/8 Mônica Bolsas da Rocha <monicabolsasr@...>:

            Faltou o trecho do struts-config.xml
             
            <action path="/AlterarLivro"
                     name="LivroAlteracaoActionForm"  type="controles.Actions.AlterarLivroAction"  
                     input="/telaAlteracaoLivro.jsp" 
                     scope="request" validate="true">   
                     <forward name="livroAlterado" path="/telaConfirmacaoAlteracaoLivro.jsp"/>               
            </action>      
             
            Vlw.


            ---------- Forwarded message ----------
            From: Mônica Bolsas da Rocha <monicabolsasr@...>
            Date: 08/06/2008 19:17
            Subject: manter os dados do livro na tela após executar o validate para um campo deixado em branco
            To:

             
            Oi Pessoal,
             
            Tô com um probleminha na tela de alteração de livro com relação à execução do método validate do seu respectivo ActionForm.
             
            Seguinte: para testar o validate em LivroAlteracaoActionForm, dou submit na jsp, com os dados do livro para alteração, deixando um campo em branco. O validate é executado certinho para o campo não preenchido, exibindo no vetor de erros apenas o erro daquele campo não preenchido. Mas, "zera" todo formulário.
             
            No caso da inclusão, o validate do seu respectivo actionForm (LivroActionForm) não zera. Pq então tá zerando na alteração ??? Essa é a dúvida.
             
            Abaixo mostro os códigos da jsp da tela de alteração de livro e seu respectivo ActionForm.
             
            Em anexo seguem os jpgs das telas para entendimento do que está ocorrendo. Se alguém souber como me ajudar agradeço muito.
             
            --
            Abçs.
            Mônica.
             
            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            JSP da da Tela de Alteração de Livro

            <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
               "http://www.w3.org/TR/html4/loose.dtd">
            <%@ page contentType="text/html" pageEncoding="UTF-8"%>
            <%@ taglib uri="/WEB-INF/struts-bean" prefix="bean" %>  
            <%@ taglib uri="/WEB-INF/struts-html" prefix="html" %>  
            <%@ taglib uri="/WEB-INF/struts-logic" prefix="logic" %>

            <jsp:useBean id="livro" scope="request" class="controles.ActionForms.LivroAlteracaoActionForm"/>

            <html>  
                <head>  
                <title><bean:message key="titulo.alteracao.livro"/></title>  
                </head>  
                <body>  
                    <h1><bean:message key="cabecalho.alteracao.livro"/></h1>  
                    <html:errors/><!--LISTA OS ERROS DE PREENCHIMENTO DOS CAMPOS -->
                    <html:form action="/AlterarLivro.do" focus="isbn">   
                        <table>  
                            <tr>  
                                <td>Código:</td>
                                <td><bean:write name="livro" property="codigo"/></td>  
                            </tr>  
                            <tr>  
                                <td >ISBN:</td>  
                                <td><html:text name="livro" property="isbn"/></td>  
                            </tr>  
                            <tr>  
                                <td >Título:</td>  
                                <td><html:text name="livro" property="titulo"/></td>  
                            </tr>  
                            <tr>  
                                <td >Autor:</td>  
                                <td><html:text name="livro" property="autor"/></td>  
                            </tr>  
                            <tr>  
                                <td >Assunto:</td>  
                                <td><html:text name="livro" property="assunto"/></td>  
                            </tr>  
                            <tr>  
                                <td >Editora:</td>  
                                <td><html:text name="livro" property="editora"/></td>  
                            </tr>  
                            <tr>  
                                <td >Nº Edição:</td>  
                                <td><html:text name="livro" property="numEdicao"/></td>  
                            </tr>  
                            <tr>  
                                <td >Ano:</td>  
                                <td><html:text name="livro" property="ano"/></td>  
                            </tr>  
                            <tr>  
                                <td>Total de Páginas:</td>  
                                <td><html:text name="livro" property="qtdPaginas"/></td>  
                            </tr>
                            <tr>   
                                <td>Tipo de Mídia:</td>  
                                <td><html:text name="livro" property="tipoMidia"/></td>  
                            </tr>
                        </table>  
                        <html:submit><bean:message key="botao.sumit"/></html:submit>  
                    </html:form>  
                </body>  
            </html>

            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            ActionForm da Tela de Alteração de Livro
             
            public class LivroAlteracaoActionForm extends org.apache.struts.action.ActionForm {
               
                private int    codigo;
                private int    isbn;
                private String titulo;
                private String autor;
                private String assunto;
                private String editora;
                private int    numEdicao;
                private int    ano;
                private int    qtdPaginas;
                private String tipoMidia;

                public int getCodigo() {
                    return codigo;
                }

                public void setCodigo(int codigo) {
                    this.codigo = codigo;
                }

                public int getIsbn() {
                    return isbn;
                }

                public void setIsbn(int isbn) {
                    this.isbn = isbn;
                }

                public String getTitulo() {
                    return titulo;
                }

                public void setTitulo(String titulo) {
                    this.titulo = titulo;
                }

                public String getAutor() {
                    return autor;
                }

                public void setAutor(String autor) {
                    this.autor = autor;
                }

                public String getAssunto() {
                    return assunto;
                }

                public void setAssunto(String assunto) {
                    this.assunto = assunto;
                }

                public String getEditora() {
                    return editora;
                }

                public void setEditora(String editora) {
                    this.editora = editora;
                }

                public int getNumEdicao() {
                    return numEdicao;
                }

                public void setNumEdicao(int numEdicao) {
                    this.numEdicao = numEdicao;
                }

                public int getAno() {
                    return ano;
                }

                public void setAno(int ano) {
                    this.ano = ano;
                }

                public int getQtdPaginas() {
                    return qtdPaginas;
                }

                public void setQtdPaginas(int qtdPaginas) {
                    this.qtdPaginas = qtdPaginas;
                }

                public String getTipoMidia() {
                    return tipoMidia;
                }

                public void setTipoMidia(String tipoMidia) {
                    this.tipoMidia = tipoMidia;
                }

                public LivroAlteracaoActionForm() {
                   super();
                   // TODO Auto-generated constructor stub
               }

               public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
                   ActionErrors errors = new ActionErrors();
                   if (getIsbn() == 0) {
                       errors.add("isbn", new ActionMessage("erro.inclusao.isbn"));
                   }
                   if (getTitulo() == null || getTitulo().length() < 1) {
                       errors.add("titulo", new ActionMessage("erro.inclusao.tituloLivro"));
                   }
                   if (getAutor() == null || getAutor().length() < 1) {
                       errors.add("autor", new ActionMessage("erro.inclusao.autor"));
                   }
                   if (getAssunto() == null || getAssunto().length() < 1) {
                       errors.add("assunto", new ActionMessage("erro.inclusao.assunto"));
                   }
                   if (getEditora() == null || getEditora().length() < 1) {
                       errors.add("editora", new ActionMessage("erro.inclusao.editoraLivro"));
                   }
                   if (getNumEdicao() == 0) {
                       errors.add("numEdicao", new ActionMessage("erro.inclusao.numEdicao"));
                   }
                   if (getAno() == 0) {
                       errors.add("ano", new ActionMessage("erro.inclusao.anoLivro"));
                   }
                   if (getQtdPaginas() == 0) {
                       errors.add("qtdPaginas", new ActionMessage("erro.inclusao.qtdPaginas"));
                   }
                   if (getTipoMidia() == null || getTipoMidia().length() < 1) {
                       errors.add("tipoMidia", new ActionMessage("erro.inclusao.tipoMidiaLivro"));
                   }     
                   return errors;
               }
            }




             
            --
            Abçs.
            Mônica.



            --







            --

          • Mônica Bolsas da Rocha
            Oi Michel, Esse probleminha eu já resolvi. Pura distração rsrsrsrs. Um outro colega da lista me deu a seguinte dica: *1 - na jsp que exibe o formulário
            Message 5 of 11 , Jun 10, 2008
              Oi Michel,
               
              Esse probleminha eu já resolvi. Pura distração rsrsrsrs. Um outro colega da lista me deu a seguinte dica:
               
              1 - na jsp que exibe o formulário para alteração com os dados do livro:

              ao invés de:
              <jsp:useBean id="livro" scope="request" class="controles.ActionForms.LivroActionForm"/>
              eu colocaria:
              <jsp:useBean id="livro" scope="session" class="controles.ActionForms.LivroActionForm"/>

              2 - na action AlterarLivro.do da jsp acima:

              ao invés de:
              request.setAttribute("livro", livro);
              eu colocaria:
              session.setAttribute("livro", livro);

              3 - no struts-config.xml:

              ao invés de :
              <action path="/AlterarLivro"     
                          name="LivroActionForm"  type="controles.Actions.AlterarLivroAction"
                          input="/telaAlteracaoLivro.jsp"
                          scope="request" validate="true">
                          <forward name="livroAlterado"       path="/telaConfirmacaoAlteracaoLivro.jsp"/>
              </action>  
              eu colocaria:
              <action path="/AlterarLivro"
                           name="LivroActionForm"  type="controles.Actions.AlterarLivroAction"       
                           input="/telaAlteracaoLivro.jsp"
                           scope="session" validate="true">
                           <forward name="livroAlterado"       path="/telaConfirmacaoAlteracaoLivro.jsp"/>
              </action>        
               
              É assim mesmo que tenho que fazer ????
               
              Bom, tava começando a fazer essas mudanças, começando pela jsp.
               
              coloquei a tag abaixo no lugar da antiga que tinha scope="request":
              <jsp:useBean id="livro" scope="session" class="controles.ActionForms.LivroActionForm"/>
               
              Aí já me deu o seguinte erro na jsp:"UseBean: Duplicate bean name: livro".
               
              Pode me ajudar mais uma vez Michel :P ??? Te agradeço muito.
               
              [ ]'s,
              Mônica.

               
              Em 10/06/08, Michel Antunes <antunesmichel@...> escreveu:

              Monica, no email anterior voce mostrou este trecho abaixo:

              "...
                 <action path="/AlterarLivro"
                       name="LivroAlteracaoActionForm"  type="controles.Actions.AlterarLivroAction"  
                       input="/telaAlteracaoLivro.jsp" 
                       scope="request" validate="true">   
                       <forward name="livroAlterado" path="/telaConfirmacaoAlteracaoLivro.jsp"/>               
                 </action>
              ..."

              O problema é que o formulário "
              LivroAlteracaoActionForm" que está usando não existe, tente usar o "LivroActionForm".

              [ ]'s,
              Michel

              .

               
            • Michel Antunes
              É por ai mesmo. O problema é o seguinte: Como você está usando o
              Message 6 of 11 , Jun 10, 2008
                É por ai mesmo.
                O problema é o seguinte:
                <jsp:useBean id="livro" scope="session" class="controles.ActionForms
                .LivroActionForm"/>

                Como você está usando o mesmo formulário para incluir e alterar acontece este problema, devido ao fato do formulário anterior ainda não ter sido destruído pela JVM.

                Tente mudar o identificador para outro nome, exemplo:
                <jsp:useBean id="livroAlt" scope="session" class="controles.ActionForms
                .LivroActionForm"/>

                Ou criar um novo formulário para a alteração.


                2008/6/10 Mônica Bolsas da Rocha <monicabolsasr@...>:

                Oi Michel,
                 
                Esse probleminha eu já resolvi. Pura distração rsrsrsrs. Um outro colega da lista me deu a seguinte dica:
                 
                1 - na jsp que exibe o formulário para alteração com os dados do livro:

                ao invés de:
                <jsp:useBean id="livro" scope="request" class="controles.ActionForms.LivroActionForm"/>
                eu colocaria:
                <jsp:useBean id="livro" scope="session" class="controles.ActionForms.LivroActionForm"/>

                2 - na action AlterarLivro.do da jsp acima:

                ao invés de:
                request.setAttribute("livro", livro);
                eu colocaria:
                session.setAttribute("livro", livro);

                3 - no struts-config.xml:

                ao invés de :
                <action path="/AlterarLivro"     
                            name="LivroActionForm"  type="controles.Actions.AlterarLivroAction"
                            input="/telaAlteracaoLivro.jsp"
                            scope="request" validate="true">
                            <forward name="livroAlterado"       path="/telaConfirmacaoAlteracaoLivro.jsp"/>
                </action>  
                eu colocaria:
                <action path="/AlterarLivro"
                             name="LivroActionForm"  type="controles.Actions.AlterarLivroAction"       
                             input="/telaAlteracaoLivro.jsp"
                             scope="session" validate="true">
                             <forward name="livroAlterado"       path="/telaConfirmacaoAlteracaoLivro.jsp"/>
                </action>        
                 
                É assim mesmo que tenho que fazer ????
                 
                Bom, tava começando a fazer essas mudanças, começando pela jsp.
                 
                coloquei a tag abaixo no lugar da antiga que tinha scope="request":
                <jsp:useBean id="livro" scope="session" class="controles.ActionForms.LivroActionForm"/>
                 
                Aí já me deu o seguinte erro na jsp:"UseBean: Duplicate bean name: livro".
                 
                Pode me ajudar mais uma vez Michel :P ??? Te agradeço muito.
                 
                [ ]'s,
                Mônica.

                 
                Em 10/06/08, Michel Antunes <antunesmichel@...> escreveu:

                Monica, no email anterior voce mostrou este trecho abaixo:

                "...
                   <action path="/AlterarLivro"
                         name="LivroAlteracaoActionForm"  type="controles.Actions.AlterarLivroAction"  
                         input="/telaAlteracaoLivro.jsp" 
                         scope="request" validate="true">   
                         <forward name="livroAlterado" path="/telaConfirmacaoAlteracaoLivro.jsp"/>               
                   </action>
                ..."

                O problema é que o formulário "
                LivroAlteracaoActionForm" que está usando não existe, tente usar o "LivroActionForm".

                [ ]'s,
                Michel

                .

                 



                --
                [ ]'s,
                Michel Antunes
              • Mônica Bolsas da Rocha
                Oi Michel, Mudei algumas coisas, mais ou menos baseado no que vc me explicou. Mas ainda não tô conseguindo o que quero que é: *exibir no vetor de erros
                Message 7 of 11 , Jun 10, 2008
                  Oi Michel,
                   
                  Mudei algumas coisas, mais ou menos baseado no que vc me explicou. Mas ainda não tô conseguindo o que quero que é: exibir no vetor de erros formulário de alteração o campo deixado em branco, mas manter os campos válidos preenchidos. Aí voltei o código como tava prá ver se com a sua ajuda posso ir mudando aos poucos.
                   
                  Vou descrever a rotina da alteração em passos, numerando e descrevendo cada passo, e logo abaixo mostrando as classes envolvidas ok ?? Assim qdo vc me responder, poderá mudar o código em cima do que te mostrei com destaque para eu saber onde mudar tudo bem ??? Ao final de tudo estará também o trecho do meu struts-config.xml prá vc me orientar na alteração tb. Também estou mandando as telas em anexo prá vc ver a nevegação como rola.
                   
                  Segue então a rotina da alteração de livro:
                   
                  1 - No menu de catálogo de livros, após escolher "alteração de livro" e submeter a jsp, é executada a action ListarLivrosAlteracaoAction que lista os livros cadastrados na jsp listaAlteracaoLivros.jsp.
                   
                  public class ListarLivrosAlteracaoAction extends org.apache.struts.action.Action {
                   
                      private final static String SUCCESS = "listaAlteracaoLivros";
                     
                      public ActionForward execute(ActionMapping mapping, ActionForm  form,
                              HttpServletRequest request, HttpServletResponse response) throws Exception {

                          LinkedList livros = new LinkedList();
                          MidiaDAO operacao = new MidiaDAO();
                          livros = operacao.listarLivros();
                          request.setAttribute("livros", livros);
                          return (mapping.findForward(SUCCESS));
                      }
                  }

                  2 - a jsp listaAlteracaoLivros.jsp é exibida e possui, para cada item da lista (um livro), um rádio associado ao código do livro que será passado à action AcionarAlteracaoLivro para obter o livro. Coloquei também nesta jsp a linha em vermelho para recuperar o valor do radio através de seu ActionForm OpcaoAlteracaoActionForm.
                   
                  listaAlteracaoLivros.jsp
                  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
                     "http://www.w3.org/TR/html4/loose.dtd">
                  <%@ page contentType="text/html" pageEncoding="UTF-8"%>
                  <%@ taglib uri="/WEB-INF/struts-bean" prefix="bean" %>  
                  <%@ taglib uri="/WEB-INF/struts-html" prefix="html" %>  
                  <%@ taglib uri="/WEB-INF/struts-logic" prefix="logic" %>
                  <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  
                  <jsp:useBean id="opcao" scope="request" class="controles.ActionForms.OpcaoAlteracaoActionForm"/>
                  <html>
                      <head>
                          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                          <title><bean:message key="titulo.lista.alteracao.livro"/></title>
                      </head>
                      <body>
                          <center><h1><bean:message key="cabecalho.lista.alteracao.livro"/></h1><center>
                          <html:form action="/AcionarAlteracaoLivro.do">  
                              <logic:present name="livros"/>
                                  <table border="1">  
                                      <tr>  
                                          <td>Código          </td>  
                                          <td>ISBN            </td>  
                                          <td>Título          </td>  
                                          <td>Autor           </td>  
                                          <td>Assunto         </td>  
                                          <td>Editora         </td>  
                                          <td>Nº Edição       </td>  
                                          <td>Ano             </td>  
                                          <td>Total de Páginas</td>  
                                          <td>Tipo de Mídia   </td>  
                                      </tr>
                                      <logic:iterate id="livro" indexId="index" scope="request" name="livros">
                                      <tr>   
                                          <td>
                                              <c:set var="radio" value="${livro.codigo}"/>
                                              <html:radio name="opcao" property="opcao" value="${radio}"/>
                                              <bean:write name="livro" property="codigo"    /></td>
                                          <td><bean:write name="livro" property="isbn"      /></td>
                                          <td><bean:write name="livro" property="titulo"    /></td>
                                          <td><bean:write name="livro" property="autor"     /></td>
                                          <td><bean:write name="livro" property="assunto"   /></td>
                                          <td><bean:write name="livro" property="editora"   /></td>
                                          <td><bean:write name="livro" property="numEdicao" /></td>
                                          <td><bean:write name="livro" property="ano"       /></td>
                                          <td><bean:write name="livro" property="qtdPaginas"/></td>
                                          <td><bean:write name="livro" property="tipoMidia" /></td>
                                      </tr>
                                      </logic:iterate>   
                                  </table>       
                                  <html:submit property="botao" value="Alterar Livro">
                                      <bean:message key="botao.lista.alteracao.livro.sumit"/>
                                  </html:submit>  
                          </html:form>  
                      </body>
                  </html>
                   
                  OpcaoAlteracaoActionForm
                   
                  public class OpcaoAlteracaoActionForm extends org.apache.struts.action.ActionForm {

                      private String opcao; // mesmo nome da propriedade name do rádio em listaLivrosalteracao.jsp

                      public String getOpcao() {
                          return opcao;
                      }

                      public void setOpcao(String opcao) {
                          this.opcao = opcao;
                      }
                  }

                  3 - ao selecionar um radio na listaAlteracaoLivros.jsp e dar submit, é chamada a action AcionarAlteracaoLivroAction que receberá o valor do radio marcado através de OpcaoAlteracaoActionForm e fará a busca do livro desejado para editá-lo na jsp telaAlteracaoLivro.jsp.

                  public class AcionarAlteracaoLivroAction extends org.apache.struts.action.Action {
                     
                      private final static String SUCCESS = "telaAlteracaoLivro";
                     
                      public ActionForward execute(ActionMapping mapping, ActionForm  form,
                              HttpServletRequest request, HttpServletResponse response) throws Exception {

                          String opcao;
                          OpcaoAlteracaoActionForm opcaoForm = (OpcaoAlteracaoActionForm)form;
                          opcao = opcaoForm.getOpcao();

                          Livro livro = new Livro();
                          MidiaDAO operacao = new MidiaDAO();      
                          livro = operacao.obterLivro(Integer.parseInt(opcao));
                          operacao.fechaConexao();
                          request.setAttribute("livro", livro);
                          return mapping.findForward(SUCCESS);
                      }
                  }

                  telaAlteracaoLivro.jsp

                  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
                     "http://www.w3.org/TR/html4/loose.dtd">
                  <%@ page contentType="text/html" pageEncoding="UTF-8"%>
                  <%@ taglib uri="/WEB-INF/struts-bean" prefix="bean" %>  
                  <%@ taglib uri="/WEB-INF/struts-html" prefix="html" %>  
                  <%@ taglib uri="/WEB-INF/struts-logic" prefix="logic" %>
                  <jsp:useBean id="livro" scope="request" class="entidades.Livro"/>  // MUDEI AQUI
                  <html>  
                      <head>  
                      <title><bean:message key="titulo.alteracao.livro"/></title>  
                      </head>  
                      <body>  
                          <h1><bean:message key="cabecalho.alteracao.livro"/></h1>  
                          <html:errors/><!--LISTA OS ERROS DE PREENCHIMENTO DOS CAMPOS -->
                          <html:form action="/AlterarLivro.do" focus="isbn">  
                              <table>  
                                  <tr>  
                                      <html:hidden name="livro" property="codigo"/>
                                      <td>Código:</td>
                                      <td><bean:write name="livro" property="codigo"/></td>  
                                  </tr>  
                                  <tr>  
                                      <td >ISBN:</td>  
                                      <td><html:text name="livro" property="isbn"/></td>  
                                  </tr>  
                                  <tr>  
                                      <td >Título:</td>  
                                      <td><html:text name="livro" property="titulo"/></td>  
                                  </tr>  
                                  <tr>  
                                      <td >Autor:</td>  
                                      <td><html:text name="livro" property="autor"/></td>  
                                  </tr>  
                                  <tr>  
                                      <td >Assunto:</td>  
                                      <td><html:text name="livro" property="assunto"/></td>  
                                  </tr>  
                                  <tr>  
                                      <td >Editora:</td>  
                                      <td><html:text name="livro" property="editora"/></td>  
                                  </tr>  
                                  <tr>  
                                      <td >Nº Edição:</td>  
                                      <td><html:text name="livro" property="numEdicao"/></td>  
                                  </tr>  
                                  <tr>  
                                      <td >Ano:</td>  
                                      <td><html:text name="livro" property="ano"/></td>  
                                  </tr>  
                                  <tr>  
                                      <td>Total de Páginas:</td>  
                                      <td><html:text name="livro" property="qtdPaginas"/></td>  
                                  </tr>
                                  <tr>   
                                      <td>Tipo de Mídia:</td>  
                                      <td><html:text name="livro" property="tipoMidia"/></td>  
                                  </tr>
                              </table>  
                              <html:submit><bean:message key="botao.sumit"/></html:submit>  
                          </html:form>  
                      </body>  
                  </html>

                  4 - a jsp telaAlteracaoLivro.jsp chama a action AlterarLivroAction que altera o livro e chama a jsp telaConfirmacaoAlteracaoLivro.jsp.

                  public class AlterarLivroAction extends org.apache.struts.action.Action {
                     
                      private final static String SUCCESS = "livroAlterado";
                     
                      public ActionForward execute(ActionMapping mapping, ActionForm  form,
                              HttpServletRequest request, HttpServletResponse response)
                              throws Exception {

                          LivroActionForm livroForm = (LivroActionForm) form;
                          Livro livro = new Livro();
                          BeanUtils.copyProperties(livro, livroForm);
                          MidiaDAO operacao = new MidiaDAO();
                          operacao.alterarLivro(livro);
                          operacao.fechaConexao();
                          request.setAttribute("livro", livro);
                          return mapping.findForward(SUCCESS);
                      }
                  }

                  telaConfirmacaoAlteracaoLivro.jsp
                  <%@ taglib uri="/WEB-INF/struts-html" prefix="html" %>   
                  <%@ taglib uri="/WEB-INF/struts-bean" prefix="bean" %>  
                  <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  
                  <jsp:useBean id="livro" scope="request" class="entidades.Livro"/>  
                  <html>  
                      <head>  
                          <title><bean:message key="titulo.confirmacao.alteracao.livro"/></title>  
                      </head>  
                      <center>
                          <bean:message key="cabecalho.confirmacao.alteracao.livro"/>  
                      </center>
                      <body>  
                          CÓDIGO:             <c:out value="${livro.codigo}"/><br>  
                          ISBN:                  <c:out value="${livro.isbn}"/><br>  
                          TÍTULO:               <c:out value="${livro.titulo}"/><br>  
                          AUTOR:               <c:out value="${livro.autor}"/><br>  
                          ASSUNTO:           <c:out value="${livro.assunto}"/><br>  
                          EDITORA:            <c:out value="${livro.editora}"/><br>  
                          Nº EDIÇÃO:         <c:out value="${livro.numEdicao}"/><br>  
                          ANO:                  <c:out value="${livro.ano}"/><br>
                          Nº DE PÁGINAS: <c:out value="${livro.qtdPaginas}"/><br>  
                          TIPO DE MÍDIA:   <c:out value="${livro.tipoMidia}"/><br>
                          <br>
                          <bean:message key="msg.confirma.alteracaoLivro"/>
                      </body>  
                  </html>
                   
                  struts-config.xml

                          <action path="/ListarLivrosAlteracao"
                                  name="OpcaoAlteracaoActionForm"
                                  type="controles.Actions.ListarLivrosAlteracaoAction" 
                                  scope="request"         validate="false">  
                                  <forward name="listaAlteracaoLivros"       path="/listaAlteracaoLivros.jsp"/>               
                          </action>      

                          <action path="/AcionarAlteracaoLivro"
                                  name="OpcaoAlteracaoActionForm" 
                                  type="controles.Actions.AcionarAlteracaoLivroAction" 
                                  scope="request"         validate="false">  
                                  <forward name="telaAlteracaoLivro"       path="/telaAlteracaoLivro.jsp"/>               
                          </action>      

                          <action path="/AlterarLivro"
                                  name="LivroActionForm"  type="controles.Actions.AlterarLivroAction" 
                                  input="/telaAlteracaoLivro.jsp"
                                  scope="request" validate="true">  
                                  <forward name="livroAlterado"       path="/telaConfirmacaoAlteracaoLivro.jsp"/>               
                          </action>      

                  PROBLEMA:

                  na jsp telaAlteracaoLivro.jsp, que quando faço alteração nos campos normalmente, respeitando os tipos dos campos, e dou submit, a alteração é concluída e exibida certinha na jsp telaConfirmacaoAlteracaoLivro.jsp.

                  Mas caso deixe um em branco, e os demais preenchidos, o vetor de erro gerado por LivroActionForm realmente exibe só o campo que não foi preenchido, mas zera todos os outros campos. Entendi que tenho que resolver com sessao mas não tô sabendo como fazer. Por isso estou mostrando os códigos prá ver se vc pode me ajudar alterando esses códigos que aí estão sacou ????

                  É isso Michel. Mais uma vez, se puder me ajudar, te agradeço. E desculpa a limitação mas é que tô começando em desenvolvimento web e struts e não tenho ainda muita noção dessa coisa de sessão. Por isso pareço meio burrinha prá entender rsrsrs. Se puder ter paciência e puder me ajudar serei eternamente grata.
                   
                  Grande Abraço,
                  Mônica.
                   
                   
                   
                   
                   
                   
                   
                   
                   
                   
                   
                   
                   
                   
                   
                   
                  Em 10/06/08, Michel Antunes <antunesmichel@...> escreveu:

                  É por ai mesmo.
                  O problema é o seguinte:
                  <jsp:useBean id="livro" scope="session" class="controles.ActionForms

                  .LivroActionForm"/>

                  Como você está usando o mesmo formulário para incluir e alterar acontece este problema, devido ao fato do formulário anterior ainda não ter sido destruído pela JVM.

                  Tente mudar o identificador para outro nome, exemplo:
                  <jsp:useBean id="livroAlt" scope="session" class="controles.ActionForms
                  .LivroActionForm"/>

                  Ou criar um novo formulário para a alteração.
                   


                  2008/6/10 Mônica Bolsas da Rocha <monicabolsasr@...>:

                  Oi Michel,
                   
                  Esse probleminha eu já resolvi. Pura distração rsrsrsrs. Um outro colega da lista me deu a seguinte dica:
                   
                  1 - na jsp que exibe o formulário para alteração com os dados do livro:

                  ao invés de:
                  <jsp:useBean id="livro" scope="request" class="controles.ActionForms.LivroActionForm"/>
                  eu colocaria:
                  <jsp:useBean id="livro" scope="session" class="controles.ActionForms.LivroActionForm"/>

                  2 - na action AlterarLivro.do da jsp acima:

                  ao invés de:
                  request.setAttribute("livro", livro);
                  eu colocaria:
                  session.setAttribute("livro", livro);

                  3 - no struts-config.xml:

                  ao invés de :
                  <action path="/AlterarLivro"     
                              name="LivroActionForm"  type="controles.Actions.AlterarLivroAction"
                              input="/telaAlteracaoLivro.jsp"
                              scope="request" validate="true">
                              <forward name="livroAlterado"       path="/telaConfirmacaoAlteracaoLivro.jsp"/>
                  </action>  
                  eu colocaria:
                  <action path="/AlterarLivro"
                               name="LivroActionForm"  type="controles.Actions.AlterarLivroAction"       
                               input="/telaAlteracaoLivro.jsp"
                               scope="session" validate="true">
                               <forward name="livroAlterado"       path="/telaConfirmacaoAlteracaoLivro.jsp"/>
                  </action>        
                   
                  É assim mesmo que tenho que fazer ????
                   
                  Bom, tava começando a fazer essas mudanças, começando pela jsp.
                   
                  coloquei a tag abaixo no lugar da antiga que tinha scope="request":
                  <jsp:useBean id="livro" scope="session" class="controles.ActionForms.LivroActionForm"/>
                   
                  Aí já me deu o seguinte erro na jsp:"UseBean: Duplicate bean name: livro".
                   
                  Pode me ajudar mais uma vez Michel :P ??? Te agradeço muito.
                   
                  [ ]'s,
                  Mônica.

                   
                  Em 10/06/08, Michel Antunes <antunesmichel@...> escreveu:

                  Monica, no email anterior voce mostrou este trecho abaixo:

                  "...
                     <action path="/AlterarLivro"
                           name="LivroAlteracaoActionForm"  type="controles.Actions.AlterarLivroAction"  
                           input="/telaAlteracaoLivro.jsp" 
                           scope="request" validate="true">   
                           <forward name="livroAlterado" path="/telaConfirmacaoAlteracaoLivro.jsp"/>               
                     </action>
                  ..."

                  O problema é que o formulário "
                  LivroAlteracaoActionForm" que está usando não existe, tente usar o "LivroActionForm".

                  [ ]'s,
                  Michel

                  .

                   


                  --
                  [ ]'s,
                  Michel Antunes

                  .




                • Michel Antunes
                  Para usar sessão, você precisa alterar o trecho: ...scope= request ... para ...scope= session ... que encontra-se nas páginas e no xml de
                  Message 8 of 11 , Jun 11, 2008
                    Para usar sessão, você precisa alterar o trecho:"...scope="request" ..." para "...scope="session" ..." que encontra-se nas páginas e no xml de configuração do struts.

                    [ ]'s,
                    Michel

                    2008/6/10 Mônica Bolsas da Rocha <monicabolsasr@...>:

                    Oi Michel,
                     
                    Mudei algumas coisas, mais ou menos baseado no que vc me explicou. Mas ainda não tô conseguindo o que quero que é: exibir no vetor de erros formulário de alteração o campo deixado em branco, mas manter os campos válidos preenchidos. Aí voltei o código como tava prá ver se com a sua ajuda posso ir mudando aos poucos.
                     
                    Vou descrever a rotina da alteração em passos, numerando e descrevendo cada passo, e logo abaixo mostrando as classes envolvidas ok ?? Assim qdo vc me responder, poderá mudar o código em cima do que te mostrei com destaque para eu saber onde mudar tudo bem ??? Ao final de tudo estará também o trecho do meu struts-config.xml prá vc me orientar na alteração tb. Também estou mandando as telas em anexo prá vc ver a nevegação como rola.
                     
                    Segue então a rotina da alteração de livro:
                     
                    1 - No menu de catálogo de livros, após escolher "alteração de livro" e submeter a jsp, é executada a action ListarLivrosAlteracaoAction que lista os livros cadastrados na jsp listaAlteracaoLivros.jsp.
                     
                    public class ListarLivrosAlteracaoAction extends org.apache.struts.action.Action {
                     
                        private final static String SUCCESS = "listaAlteracaoLivros";
                       
                        public ActionForward execute(ActionMapping mapping, ActionForm  form,
                                HttpServletRequest request, HttpServletResponse response) throws Exception {

                            LinkedList livros = new LinkedList();
                            MidiaDAO operacao = new MidiaDAO();
                            livros = operacao.listarLivros();
                            request.setAttribute("livros", livros);
                            return (mapping.findForward(SUCCESS));
                        }
                    }

                    2 - a jsp listaAlteracaoLivros.jsp é exibida e possui, para cada item da lista (um livro), um rádio associado ao código do livro que será passado à action AcionarAlteracaoLivro para obter o livro. Coloquei também nesta jsp a linha em vermelho para recuperar o valor do radio através de seu ActionForm OpcaoAlteracaoActionForm.
                     
                    listaAlteracaoLivros.jsp
                    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
                       "http://www.w3.org/TR/html4/loose.dtd">
                    <%@ page contentType="text/html" pageEncoding="UTF-8"%>
                    <%@ taglib uri="/WEB-INF/struts-bean" prefix="bean" %>  
                    <%@ taglib uri="/WEB-INF/struts-html" prefix="html" %>  
                    <%@ taglib uri="/WEB-INF/struts-logic" prefix="logic" %>
                    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  
                    <jsp:useBean id="opcao" scope="request" class="controles.ActionForms.OpcaoAlteracaoActionForm"/>
                    <html>
                        <head>
                            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                            <title><bean:message key="titulo.lista.alteracao.livro"/></title>
                        </head>
                        <body>
                            <center><h1><bean:message key="cabecalho.lista.alteracao.livro"/></h1><center>
                            <html:form action="/AcionarAlteracaoLivro.do">  
                                <logic:present name="livros"/>
                                    <table border="1">  
                                        <tr>  
                                            <td>Código          </td>  
                                            <td>ISBN            </td>  
                                            <td>Título          </td>  
                                            <td>Autor           </td>  
                                            <td>Assunto         </td>  
                                            <td>Editora         </td>  
                                            <td>Nº Edição       </td>  
                                            <td>Ano             </td>  
                                            <td>Total de Páginas</td>  
                                            <td>Tipo de Mídia   </td>  
                                        </tr>
                                        <logic:iterate id="livro" indexId="index" scope="request" name="livros">
                                        <tr>   
                                            <td>
                                                <c:set var="radio" value="${livro.codigo}"/>
                                                <html:radio name="opcao" property="opcao" value="${radio}"/>
                                                <bean:write name="livro" property="codigo"    /></td>
                                            <td><bean:write name="livro" property="isbn"      /></td>
                                            <td><bean:write name="livro" property="titulo"    /></td>
                                            <td><bean:write name="livro" property="autor"     /></td>
                                            <td><bean:write name="livro" property="assunto"   /></td>
                                            <td><bean:write name="livro" property="editora"   /></td>
                                            <td><bean:write name="livro" property="numEdicao" /></td>
                                            <td><bean:write name="livro" property="ano"       /></td>
                                            <td><bean:write name="livro" property="qtdPaginas"/></td>
                                            <td><bean:write name="livro" property="tipoMidia" /></td>
                                        </tr>
                                        </logic:iterate>   
                                    </table>       
                                    <html:submit property="botao" value="Alterar Livro">
                                        <bean:message key="botao.lista.alteracao.livro.sumit"/>

                                    </html:submit>  
                            </html:form>  
                        </body>
                    </html>
                     
                    OpcaoAlteracaoActionForm
                     
                    public class OpcaoAlteracaoActionForm extends org.apache.struts.action.ActionForm {

                        private String opcao; // mesmo nome da propriedade name do rádio em listaLivrosalteracao.jsp

                        public String getOpcao() {
                            return opcao;
                        }

                        public void setOpcao(String opcao) {
                            this.opcao = opcao;
                        }
                    }

                    3 - ao selecionar um radio na listaAlteracaoLivros.jsp e dar submit, é chamada a action AcionarAlteracaoLivroAction que receberá o valor do radio marcado através de OpcaoAlteracaoActionForm e fará a busca do livro desejado para editá-lo na jsp telaAlteracaoLivro.jsp.

                    public class AcionarAlteracaoLivroAction extends org.apache.struts.action.Action {
                       
                        private final static String SUCCESS = "telaAlteracaoLivro";
                       
                        public ActionForward execute(ActionMapping mapping, ActionForm  form,
                                HttpServletRequest request, HttpServletResponse response) throws Exception {

                            String opcao;
                            OpcaoAlteracaoActionForm opcaoForm = (OpcaoAlteracaoActionForm)form;
                            opcao = opcaoForm.getOpcao();

                            Livro livro = new Livro();
                            MidiaDAO operacao = new MidiaDAO();      
                            livro = operacao.obterLivro(Integer.parseInt(opcao));
                            operacao.fechaConexao();
                            request.setAttribute("livro", livro);
                            return mapping.findForward(SUCCESS);
                        }
                    }

                    telaAlteracaoLivro.jsp

                    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
                       "http://www.w3.org/TR/html4/loose.dtd">
                    <%@ page contentType="text/html" pageEncoding="UTF-8"%>
                    <%@ taglib uri="/WEB-INF/struts-bean" prefix="bean" %>  
                    <%@ taglib uri="/WEB-INF/struts-html" prefix="html" %>  
                    <%@ taglib uri="/WEB-INF/struts-logic" prefix="logic" %>
                    <jsp:useBean id="livro" scope="request" class="entidades.Livro"/>  // MUDEI AQUI
                    <html>  
                        <head>  
                        <title><bean:message key="titulo.alteracao.livro"/></title>  
                        </head>  
                        <body>  
                            <h1><bean:message key="cabecalho.alteracao.livro"/></h1>  
                            <html:errors/><!--LISTA OS ERROS DE PREENCHIMENTO DOS CAMPOS -->
                            <html:form action="/AlterarLivro.do" focus="isbn">  
                                <table>  
                                    <tr>  
                                        <html:hidden name="livro" property="codigo"/>

                                        <td>Código:</td>
                                        <td><bean:write name="livro" property="codigo"/></td>  
                                    </tr>  
                                    <tr>  
                                        <td >ISBN:</td>  
                                        <td><html:text name="livro" property="isbn"/></td>  
                                    </tr>  
                                    <tr>  
                                        <td >Título:</td>  
                                        <td><html:text name="livro" property="titulo"/></td>  
                                    </tr>  
                                    <tr>  
                                        <td >Autor:</td>  
                                        <td><html:text name="livro" property="autor"/></td>  
                                    </tr>  
                                    <tr>  
                                        <td >Assunto:</td>  
                                        <td><html:text name="livro" property="assunto"/></td>  
                                    </tr>  
                                    <tr>  
                                        <td >Editora:</td>  
                                        <td><html:text name="livro" property="editora"/></td>  
                                    </tr>  
                                    <tr>  
                                        <td >Nº Edição:</td>  
                                        <td><html:text name="livro" property="numEdicao"/></td>  
                                    </tr>  
                                    <tr>  
                                        <td >Ano:</td>  
                                        <td><html:text name="livro" property="ano"/></td>  
                                    </tr>  
                                    <tr>  
                                        <td>Total de Páginas:</td>  
                                        <td><html:text name="livro" property="qtdPaginas"/></td>  
                                    </tr>
                                    <tr>   
                                        <td>Tipo de Mídia:</td>  
                                        <td><html:text name="livro" property="tipoMidia"/></td>  
                                    </tr>
                                </table>  
                                <html:submit><bean:message key="botao.sumit"/></html:submit>  
                            </html:form>  
                        </body>  
                    </html>

                    4 - a jsp telaAlteracaoLivro.jsp chama a action AlterarLivroAction que altera o livro e chama a jsp telaConfirmacaoAlteracaoLivro.jsp.

                    public class AlterarLivroAction extends org.apache.struts.action.Action {
                       
                        private final static String SUCCESS = "livroAlterado";
                       
                        public ActionForward execute(ActionMapping mapping, ActionForm  form,
                                HttpServletRequest request, HttpServletResponse response)
                                throws Exception {

                            LivroActionForm livroForm = (LivroActionForm) form;
                            Livro livro = new Livro();
                            BeanUtils.copyProperties(livro, livroForm);
                            MidiaDAO operacao = new MidiaDAO();
                            operacao.alterarLivro(livro);
                            operacao.fechaConexao();
                            request.setAttribute("livro", livro);
                            return mapping.findForward(SUCCESS);
                        }
                    }

                    telaConfirmacaoAlteracaoLivro.jsp
                    <%@ taglib uri="/WEB-INF/struts-html" prefix="html" %>   
                    <%@ taglib uri="/WEB-INF/struts-bean" prefix="bean" %>  
                    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  
                    <jsp:useBean id="livro" scope="request" class="entidades.Livro"/>  
                    <html>  
                        <head>  
                            <title><bean:message key="titulo.confirmacao.alteracao.livro"/></title>  
                        </head>  
                        <center>
                            <bean:message key="cabecalho.confirmacao.alteracao.livro"/>  
                        </center>
                        <body>  
                            CÓDIGO:             <c:out value="${livro.codigo}"/><br>  
                            ISBN:                  <c:out value="${livro.isbn}"/><br>  
                            TÍTULO:               <c:out value="${livro.titulo}"/><br>  
                            AUTOR:               <c:out value="${livro.autor}"/><br>  
                            ASSUNTO:           <c:out value="${livro.assunto}"/><br>  
                            EDITORA:            <c:out value="${livro.editora}"/><br>  
                            Nº EDIÇÃO:         <c:out value="${livro.numEdicao}"/><br>  
                            ANO:                  <c:out value="${livro.ano}"/><br>
                            Nº DE PÁGINAS: <c:out value="${livro.qtdPaginas}"/><br>  
                            TIPO DE MÍDIA:   <c:out value="${livro.tipoMidia}"/><br>
                            <br>
                            <bean:message key="msg.confirma.alteracaoLivro"/>
                        </body>  
                    </html>
                     
                    struts-config.xml

                            <action path="/ListarLivrosAlteracao"
                                    name="OpcaoAlteracaoActionForm"
                                    type="controles.Actions.ListarLivrosAlteracaoAction" 
                                    scope="request"         validate="false">  
                                    <forward name="listaAlteracaoLivros"       path="/listaAlteracaoLivros.jsp"/>               
                            </action>      

                            <action path="/AcionarAlteracaoLivro"
                                    name="OpcaoAlteracaoActionForm" 
                                    type="controles.Actions.AcionarAlteracaoLivroAction" 
                                    scope="request"         validate="false">  
                                    <forward name="telaAlteracaoLivro"       path="/telaAlteracaoLivro.jsp"/>               
                            </action>      

                            <action path="/AlterarLivro"
                                    name="LivroActionForm"  type="controles.Actions.AlterarLivroAction" 
                                    input="/telaAlteracaoLivro.jsp"
                                    scope="request" validate="true">  
                                    <forward name="livroAlterado"       path="/telaConfirmacaoAlteracaoLivro.jsp"/>               
                            </action>      

                    PROBLEMA:

                    na jsp telaAlteracaoLivro.jsp, que quando faço alteração nos campos normalmente, respeitando os tipos dos campos, e dou submit, a alteração é concluída e exibida certinha na jsp telaConfirmacaoAlteracaoLivro.jsp.

                    Mas caso deixe um em branco, e os demais preenchidos, o vetor de erro gerado por LivroActionForm realmente exibe só o campo que não foi preenchido, mas zera todos os outros campos. Entendi que tenho que resolver com sessao mas não tô sabendo como fazer. Por isso estou mostrando os códigos prá ver se vc pode me ajudar alterando esses códigos que aí estão sacou ????

                    É isso Michel. Mais uma vez, se puder me ajudar, te agradeço. E desculpa a limitação mas é que tô começando em desenvolvimento web e struts e não tenho ainda muita noção dessa coisa de sessão. Por isso pareço meio burrinha prá entender rsrsrs. Se puder ter paciência e puder me ajudar serei eternamente grata.
                     
                    Grande Abraço,
                    Mônica.
                     
                     
                     
                     
                     
                     
                     
                     
                     
                     
                     
                     
                     
                     
                     
                     
                    Em 10/06/08, Michel Antunes <antunesmichel@...> escreveu:

                    É por ai mesmo.
                    O problema é o seguinte:
                    <jsp:useBean id="livro" scope="session" class="controles.ActionForms
                    .LivroActionForm"/>

                    Como você está usando o mesmo formulário para incluir e alterar acontece este problema, devido ao fato do formulário anterior ainda não ter sido destruído pela JVM.

                    Tente mudar o identificador para outro nome, exemplo:
                    <jsp:useBean id="livroAlt" scope="session" class="controles.ActionForms
                    .LivroActionForm"/>

                    Ou criar um novo formulário para a alteração.
                     


                    2008/6/10 Mônica Bolsas da Rocha <monicabolsasr@...>:

                    Oi Michel,
                     
                    Esse probleminha eu já resolvi. Pura distração rsrsrsrs. Um outro colega da lista me deu a seguinte dica:
                     
                    1 - na jsp que exibe o formulário para alteração com os dados do livro:

                    ao invés de:
                    <jsp:useBean id="livro" scope="request" class="controles.ActionForms.LivroActionForm"/>
                    eu colocaria:
                    <jsp:useBean id="livro" scope="session" class="controles.ActionForms.LivroActionForm"/>

                    2 - na action AlterarLivro.do da jsp acima:

                    ao invés de:
                    request.setAttribute("livro", livro);
                    eu colocaria:
                    session.setAttribute("livro", livro);

                    3 - no struts-config.xml:

                    ao invés de :
                    <action path="/AlterarLivro"     
                                name="LivroActionForm"  type="controles.Actions.AlterarLivroAction"
                                input="/telaAlteracaoLivro.jsp"
                                scope="request" validate="true">
                                <forward name="livroAlterado"       path="/telaConfirmacaoAlteracaoLivro.jsp"/>
                    </action>  
                    eu colocaria:
                    <action path="/AlterarLivro"
                                 name="LivroActionForm"  type="controles.Actions.AlterarLivroAction"       
                                 input="/telaAlteracaoLivro.jsp"
                                 scope="session" validate="true">
                                 <forward name="livroAlterado"       path="/telaConfirmacaoAlteracaoLivro.jsp"/>
                    </action>        
                     
                    É assim mesmo que tenho que fazer ????
                     
                    Bom, tava começando a fazer essas mudanças, começando pela jsp.
                     
                    coloquei a tag abaixo no lugar da antiga que tinha scope="request":
                    <jsp:useBean id="livro" scope="session" class="controles.ActionForms.LivroActionForm"/>
                     
                    Aí já me deu o seguinte erro na jsp:"UseBean: Duplicate bean name: livro".
                     
                    Pode me ajudar mais uma vez Michel :P ??? Te agradeço muito.
                     
                    [ ]'s,
                    Mônica.

                     
                    Em 10/06/08, Michel Antunes <antunesmichel@...> escreveu:

                    Monica, no email anterior voce mostrou este trecho abaixo:

                    "...
                       <action path="/AlterarLivro"
                             name="LivroAlteracaoActionForm"  type="controles.Actions.AlterarLivroAction"  
                             input="/telaAlteracaoLivro.jsp" 
                             scope="request" validate="true">   
                             <forward name="livroAlterado" path="/telaConfirmacaoAlteracaoLivro.jsp"/>               
                       </action>
                    ..."

                    O problema é que o formulário "
                    LivroAlteracaoActionForm" que está usando não existe, tente usar o "LivroActionForm".

                    [ ]'s,
                    Michel

                    .

                     


                    --
                    [ ]'s,
                    Michel Antunes

                    .







                    --

                  • Mônica Bolsas da Rocha
                    Oi Michel !!! Eu juro que fiz isso !!! Na tela de alteração troquei: por:
                    Message 9 of 11 , Jun 11, 2008
                      Oi Michel !!!
                       
                      Eu juro que fiz isso !!!
                       
                      Na tela de alteração troquei:
                      <jsp:useBean id="livro" scope="request" class="entidades.Livro"/>
                       
                      por:
                      <jsp:useBean id="livro" scope="session" class="entidades.Livro"/>
                       
                      ---------X---------X---------X---------X---------X---------X---------X---------X---------X
                       
                      No actionmapping da action AlterarLivroAction no struts-config.xml:
                       
                              <action path="/AlterarLivro"
                                      name="LivroActionForm"  type="controles.Actions.AlterarLivroAction" 
                                      input="/telaAlteracaoLivro.jsp"
                                      scope="request" validate="true">   //TROQUEI POR scope="session"
                                      <forward name="livroAlterado"       path="/telaConfirmacaoAlteracaoLivro.jsp"/>               
                              </action>      
                       
                      Deu erro de NullPointerException.
                       
                      ---------X---------X---------X---------X---------X---------X---------X---------X---------X---------X---------X
                       
                      O problema está na implementação da action que acho que não tô sabendo fazer.
                      Minha action tá assim:
                       
                      public class AlterarLivroAction extends org.apache.struts.action.Action {
                         
                          private final static String SUCCESS = "livroAlterado";
                         
                          public ActionForward execute(ActionMapping mapping, ActionForm  form,
                                  HttpServletRequest request, HttpServletResponse response)
                                  throws Exception {
                             
                              LivroActionForm livroForm = (LivroActionForm) form;
                              Livro livro = new Livro();
                              BeanUtils.copyProperties(livro, livroForm);
                              MidiaDAO operacao = new MidiaDAO();
                              operacao.alterarLivro(livro);
                              operacao.fechaConexao();
                              request.setAttribute("livro", livro);
                              return mapping.findForward(SUCCESS);          
                          }
                      }

                      Não sei mais o que faço. Acho que vou desistir.
                       
                      Não sei o que tá acontecendo.
                       
                      Bom, se ainda tiver paciência prá me ajudar te agradeço muito rsrsrsr.
                       
                      Vlw.
                       
                      Em 11/06/08, Michel Antunes <antunesmichel@...> escreveu:

                      Para usar sessão, você precisa alterar o trecho:"...scope="request" ..." para "...scope="session" ..." que encontra-se nas páginas e no xml de configuração do struts.

                      [ ]'s,
                      Michel



                      2008/6/10 Mônica Bolsas da Rocha <monicabolsasr@...>:

                      Oi Michel,
                       
                      Mudei algumas coisas, mais ou menos baseado no que vc me explicou. Mas ainda não tô conseguindo o que quero que é: exibir no vetor de erros formulário de alteração o campo deixado em branco, mas manter os campos válidos preenchidos. Aí voltei o código como tava prá ver se com a sua ajuda posso ir mudando aos poucos.
                       
                      Vou descrever a rotina da alteração em passos, numerando e descrevendo cada passo, e logo abaixo mostrando as classes envolvidas ok ?? Assim qdo vc me responder, poderá mudar o código em cima do que te mostrei com destaque para eu saber onde mudar tudo bem ??? Ao final de tudo estará também o trecho do meu struts-config.xml prá vc me orientar na alteração tb. Também estou mandando as telas em anexo prá vc ver a nevegação como rola.
                       
                      Segue então a rotina da alteração de livro:
                       
                      1 - No menu de catálogo de livros, após escolher "alteração de livro" e submeter a jsp, é executada a action ListarLivrosAlteracaoAction que lista os livros cadastrados na jsp listaAlteracaoLivros.jsp.
                       
                      public class ListarLivrosAlteracaoAction extends org.apache.struts.action.Action {
                       
                          private final static String SUCCESS = "listaAlteracaoLivros";
                         
                          public ActionForward execute(ActionMapping mapping, ActionForm  form,
                                  HttpServletRequest request, HttpServletResponse response) throws Exception {

                              LinkedList livros = new LinkedList();
                              MidiaDAO operacao = new MidiaDAO();
                              livros = operacao.listarLivros();
                              request.setAttribute("livros", livros);
                              return (mapping.findForward(SUCCESS));
                          }
                      }

                      2 - a jsp listaAlteracaoLivros.jsp é exibida e possui, para cada item da lista (um livro), um rádio associado ao código do livro que será passado à action AcionarAlteracaoLivro para obter o livro. Coloquei também nesta jsp a linha em vermelho para recuperar o valor do radio através de seu ActionForm OpcaoAlteracaoActionForm.
                       
                      listaAlteracaoLivros.jsp
                      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
                         "http://www.w3.org/TR/html4/loose.dtd">
                      <%@ page contentType="text/html" pageEncoding="UTF-8"%>
                      <%@ taglib uri="/WEB-INF/struts-bean" prefix="bean" %>  
                      <%@ taglib uri="/WEB-INF/struts-html" prefix="html" %>  
                      <%@ taglib uri="/WEB-INF/struts-logic" prefix="logic" %>
                       
                      <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  
                      <jsp:useBean id="opcao" scope="request" class="controles.ActionForms.OpcaoAlteracaoActionForm"/>
                      <html>
                          <head>
                              <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                              <title><bean:message key="titulo.lista.alteracao.livro"/></title>
                          </head>
                          <body>
                              <center><h1><bean:message key="cabecalho.lista.alteracao.livro"/></h1><center>
                              <html:form action="/AcionarAlteracaoLivro.do">  
                                  <logic:present name="livros"/>
                                      <table border="1">  
                                          <tr>  
                                              <td>Código          </td>  
                                              <td>ISBN            </td>  
                                              <td>Título          </td>  
                                              <td>Autor           </td>  
                                              <td>Assunto         </td>  
                                              <td>Editora         </td>  
                                              <td>Nº Edição       </td>  
                                              <td>Ano             </td>  
                                              <td>Total de Páginas</td>  
                       
                                              <td>Tipo de Mídia   </td>  
                                          </tr>
                                          <logic:iterate id="livro" indexId="index" scope="request" name="livros">
                                          <tr>   
                                              <td>
                                                  <c:set var="radio" value="${livro.codigo}"/>
                                                  <html:radio name="opcao" property="opcao" value="${radio}"/>
                                                  <bean:write name="livro" property="codigo"    /></td>
                       
                                              <td><bean:write name="livro" property="isbn"      /></td>
                                              <td><bean:write name="livro" property="titulo"    /></td>
                                              <td><bean:write name="livro" property="autor"     /></td>
                                              <td><bean:write name="livro" property="assunto"   /></td>
                                              <td><bean:write name="livro" property="editora"   /></td>
                                              <td><bean:write name="livro" property="numEdicao" /></td>
                                              <td><bean:write name="livro" property="ano"       /></td>
                                              <td><bean:write name="livro" property="qtdPaginas"/></td>
                                              <td><bean:write name="livro" property="tipoMidia" /></td>
                                          </tr>
                                          </logic:iterate>   
                                      </table>       
                                      <html:submit property="botao" value="Alterar Livro">
                                          <bean:message key="botao.lista.alteracao.livro.sumit"/>

                                      </html:submit>  
                              </html:form>  
                          </body>
                      </html>
                       
                      OpcaoAlteracaoActionForm
                       
                      public class OpcaoAlteracaoActionForm extends org.apache.struts.action.ActionForm {

                          private String opcao; // mesmo nome da propriedade name do rádio em listaLivrosalteracao.jsp

                          public String getOpcao() {
                              return opcao;
                          }

                          public void setOpcao(String opcao) {
                              this.opcao = opcao;
                          }
                      }

                      3 - ao selecionar um radio na listaAlteracaoLivros.jsp e dar submit, é chamada a action AcionarAlteracaoLivroAction que receberá o valor do radio marcado através de OpcaoAlteracaoActionForm e fará a busca do livro desejado para editá-lo na jsp telaAlteracaoLivro.jsp.

                      public class AcionarAlteracaoLivroAction extends org.apache.struts.action.Action {
                         
                          private final static String SUCCESS = "telaAlteracaoLivro";
                         
                          public ActionForward execute(ActionMapping mapping, ActionForm  form,
                                  HttpServletRequest request, HttpServletResponse response) throws Exception {

                              String opcao;
                              OpcaoAlteracaoActionForm opcaoForm = (OpcaoAlteracaoActionForm)form;
                              opcao = opcaoForm.getOpcao();

                              Livro livro = new Livro();
                              MidiaDAO operacao = new MidiaDAO();      
                              livro = operacao.obterLivro(Integer.parseInt(opcao));
                              operacao.fechaConexao();
                              request.setAttribute("livro", livro);
                              return mapping.findForward(SUCCESS);
                          }
                      }

                      telaAlteracaoLivro.jsp

                      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
                         "http://www.w3.org/TR/html4/loose.dtd">
                      <%@ page contentType="text/html" pageEncoding="UTF-8"%>
                      <%@ taglib uri="/WEB-INF/struts-bean" prefix="bean" %>  
                      <%@ taglib uri="/WEB-INF/struts-html" prefix="html" %>  
                      <%@ taglib uri="/WEB-INF/struts-logic" prefix="logic" %>
                       
                      <jsp:useBean id="livro" scope="request" class="entidades.Livro"/>  // MUDEI AQUI
                      <html>  
                          <head>  
                          <title><bean:message key="titulo.alteracao.livro"/></title>  
                          </head>  
                          <body>  
                              <h1><bean:message key="cabecalho.alteracao.livro"/></h1>  
                              <html:errors/><!--LISTA OS ERROS DE PREENCHIMENTO DOS CAMPOS -->
                              <html:form action="/AlterarLivro.do" focus="isbn">  
                                  <table>  
                                      <tr>  
                       
                                          <html:hidden name="livro" property="codigo"/>

                                          <td>Código:</td>
                                          <td><bean:write name="livro" property="codigo"/></td>  
                                      </tr>  
                                      <tr>  
                                          <td >ISBN:</td>  
                                          <td><html:text name="livro" property="isbn"/></td>  
                                      </tr>  
                                      <tr>  
                                          <td >Título:</td>  
                                          <td><html:text name="livro" property="titulo"/></td>  
                                      </tr>  
                                      <tr>  
                                          <td >Autor:</td>  
                                          <td><html:text name="livro" property="autor"/></td>  
                                      </tr>  
                                      <tr>  
                                          <td >Assunto:</td>  
                                          <td><html:text name="livro" property="assunto"/></td>  
                                      </tr>  
                                      <tr>  
                                          <td >Editora:</td>  
                                          <td><html:text name="livro" property="editora"/></td>  
                                      </tr>  
                                      <tr>  
                                          <td >Nº Edição:</td>  
                                          <td><html:text name="livro" property="numEdicao"/></td>  
                                      </tr>  
                                      <tr>  
                                          <td >Ano:</td>  
                                          <td><html:text name="livro" property="ano"/></td>  
                                      </tr>  
                                      <tr>  
                                          <td>Total de Páginas:</td>  
                                          <td><html:text name="livro" property="qtdPaginas"/></td>  
                                      </tr>
                                      <tr>   
                                          <td>Tipo de Mídia:</td>  
                                          <td><html:text name="livro" property="tipoMidia"/></td>  
                                      </tr>
                                  </table>  
                                  <html:submit><bean:message key="botao.sumit"/></html:submit>  
                              </html:form>  
                          </body>  
                      </html>

                      4 - a jsp telaAlteracaoLivro.jsp chama a action AlterarLivroAction que altera o livro e chama a jsp telaConfirmacaoAlteracaoLivro.jsp.

                      public class AlterarLivroAction extends org.apache.struts.action.Action {
                         
                          private final static String SUCCESS = "livroAlterado";
                         
                          public ActionForward execute(ActionMapping mapping, ActionForm  form,
                                  HttpServletRequest request, HttpServletResponse response)
                                  throws Exception {

                              LivroActionForm livroForm = (LivroActionForm) form;
                              Livro livro = new Livro();
                              BeanUtils.copyProperties(livro, livroForm);
                              MidiaDAO operacao = new MidiaDAO();
                              operacao.alterarLivro(livro);
                              operacao.fechaConexao();
                              request.setAttribute("livro", livro);
                              return mapping.findForward(SUCCESS);
                          }
                      }

                      telaConfirmacaoAlteracaoLivro.jsp
                      <%@ taglib uri="/WEB-INF/struts-html" prefix="html" %>   
                      <%@ taglib uri="/WEB-INF/struts-bean" prefix="bean" %>  
                       
                      <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  
                      <jsp:useBean id="livro" scope="request" class="entidades.Livro"/>  
                      <html>  
                          <head>  
                              <title><bean:message key="titulo.confirmacao.alteracao.livro"/></title>  
                          </head>  
                          <center>
                              <bean:message key="cabecalho.confirmacao.alteracao.livro"/>  
                          </center>
                          <body>  
                              CÓDIGO:             <c:out value="${livro.codigo}"/><br>  
                              ISBN:                  <c:out value="${livro.isbn}"/><br>  
                              TÍTULO:               <c:out value="${livro.titulo}"/><br>  
                              AUTOR:               <c:out value="${livro.autor}"/><br>  
                              ASSUNTO:           <c:out value="${livro.assunto}"/><br>  
                              EDITORA:            <c:out value="${livro.editora}"/><br>  
                              Nº EDIÇÃO:         <c:out value="${livro.numEdicao}"/><br>  
                              ANO:                  <c:out value="${livro.ano}"/><br>
                              Nº DE PÁGINAS: <c:out value="${livro.qtdPaginas}"/><br>  
                              TIPO DE MÍDIA:   <c:out value="${livro.tipoMidia}"/><br>
                              <br>
                              <bean:message key="msg.confirma.alteracaoLivro"/>
                          </body>  
                      </html>
                       
                      struts-config.xml

                              <action path="/ListarLivrosAlteracao"
                                      name="OpcaoAlteracaoActionForm"
                                      type="controles.Actions.ListarLivrosAlteracaoAction" 
                                      scope="request"         validate="false">  
                                      <forward name="listaAlteracaoLivros"       path="/listaAlteracaoLivros.jsp"/>               
                              </action>      

                              <action path="/AcionarAlteracaoLivro"
                                      name="OpcaoAlteracaoActionForm" 
                                      type="controles.Actions.AcionarAlteracaoLivroAction" 
                                      scope="request"         validate="false">  
                                      <forward name="telaAlteracaoLivro"       path="/telaAlteracaoLivro.jsp"/>               
                              </action>      

                              <action path="/AlterarLivro"
                                      name="LivroActionForm"  type="controles.Actions.AlterarLivroAction" 
                                      input="/telaAlteracaoLivro.jsp"
                                      scope="request" validate="true">  
                                      <forward name="livroAlterado"       path="/telaConfirmacaoAlteracaoLivro.jsp"/>               
                              </action>      

                      PROBLEMA:

                      na jsp telaAlteracaoLivro.jsp, que quando faço alteração nos campos normalmente, respeitando os tipos dos campos, e dou submit, a alteração é concluída e exibida certinha na jsp telaConfirmacaoAlteracaoLivro.jsp.

                      Mas caso deixe um em branco, e os demais preenchidos, o vetor de erro gerado por LivroActionForm realmente exibe só o campo que não foi preenchido, mas zera todos os outros campos. Entendi que tenho que resolver com sessao mas não tô sabendo como fazer. Por isso estou mostrando os códigos prá ver se vc pode me ajudar alterando esses códigos que aí estão sacou ????

                      É isso Michel. Mais uma vez, se puder me ajudar, te agradeço. E desculpa a limitação mas é que tô começando em desenvolvimento web e struts e não tenho ainda muita noção dessa coisa de sessão. Por isso pareço meio burrinha prá entender rsrsrs. Se puder ter paciência e puder me ajudar serei eternamente grata.
                       
                      Grande Abraço,
                      Mônica.
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                      Em 10/06/08, Michel Antunes <antunesmichel@...> escreveu:

                      É por ai mesmo.
                      O problema é o seguinte:
                      <jsp:useBean id="livro" scope="session" class="controles.ActionForms
                      .LivroActionForm"/>

                      Como você está usando o mesmo formulário para incluir e alterar acontece este problema, devido ao fato do formulário anterior ainda não ter sido destruído pela JVM.

                      Tente mudar o identificador para outro nome, exemplo:
                      <jsp:useBean id="livroAlt" scope="session" class="controles.ActionForms
                      .LivroActionForm"/>

                      Ou criar um novo formulário para a alteração.
                       


                      2008/6/10 Mônica Bolsas da Rocha <monicabolsasr@...>:

                      Oi Michel,
                       
                      Esse probleminha eu já resolvi. Pura distração rsrsrsrs. Um outro colega da lista me deu a seguinte dica:
                       
                      1 - na jsp que exibe o formulário para alteração com os dados do livro:

                      ao invés de:
                      <jsp:useBean id="livro" scope="request" class="controles.ActionForms.LivroActionForm"/>
                      eu colocaria:
                      <jsp:useBean id="livro" scope="session" class="controles.ActionForms.LivroActionForm"/>

                      2 - na action AlterarLivro.do da jsp acima:

                      ao invés de:
                      request.setAttribute("livro", livro);
                      eu colocaria:
                      session.setAttribute("livro", livro);

                      3 - no struts-config.xml:

                      ao invés de :
                      <action path="/AlterarLivro"     
                                  name="LivroActionForm"  type="controles.Actions.AlterarLivroAction"
                                  input="/telaAlteracaoLivro.jsp"
                                  scope="request" validate="true">
                                  <forward name="livroAlterado"       path="/telaConfirmacaoAlteracaoLivro.jsp"/>
                      </action>  
                      eu colocaria:
                      <action path="/AlterarLivro"
                                   name="LivroActionForm"  type="controles.Actions.AlterarLivroAction"       
                                   input="/telaAlteracaoLivro.jsp"
                                   scope="session" validate="true">
                                   <forward name="livroAlterado"       path="/telaConfirmacaoAlteracaoLivro.jsp"/>
                      </action>        
                       
                      É assim mesmo que tenho que fazer ????
                       
                      Bom, tava começando a fazer essas mudanças, começando pela jsp.
                       
                      coloquei a tag abaixo no lugar da antiga que tinha scope="request":
                      <jsp:useBean id="livro" scope="session" class="controles.ActionForms.LivroActionForm"/>
                       
                      Aí já me deu o seguinte erro na jsp:"UseBean: Duplicate bean name: livro".
                       
                      Pode me ajudar mais uma vez Michel :P ??? Te agradeço muito.
                       
                      [ ]'s,
                      Mônica.

                       
                      Em 10/06/08, Michel Antunes <antunesmichel@...> escreveu:

                      Monica, no email anterior voce mostrou este trecho abaixo:

                      "...
                         <action path="/AlterarLivro"
                               name="LivroAlteracaoActionForm"  type="controles.Actions.AlterarLivroAction"  
                               input="/telaAlteracaoLivro.jsp" 
                               scope="request" validate="true">   
                               <forward name="livroAlterado" path="/telaConfirmacaoAlteracaoLivro.jsp"/>               
                         </action>
                      ..."

                      O problema é que o formulário "
                      LivroAlteracaoActionForm" que está usando não existe, tente usar o "LivroActionForm".

                      [ ]'s,
                      Michel

                      .

                       


                      --
                      [ ]'s,
                      Michel Antunes
                       

                      .

                       
                    • Michel Antunes
                      Tenta fazer um debug para visualizar onde está ocorrendo o NullPointer. [ ] s, Michel Antunes ... -- Tenta fazer um debug para visualizar onde está ocorrendo
                      Message 10 of 11 , Jun 12, 2008
                        Tenta fazer um debug para visualizar onde está ocorrendo o NullPointer.

                        [ ]'s,
                        Michel Antunes

                        2008/6/11 Mônica Bolsas da Rocha <monicabolsasr@...>:

                        Oi Michel !!!
                         
                        Eu juro que fiz isso !!!
                         
                        Na tela de alteração troquei:
                        <jsp:useBean id="livro" scope="request" class="entidades.Livro"/>
                         
                        por:
                        <jsp:useBean id="livro" scope="session" class="entidades.Livro"/>
                         
                        ---------X---------X---------X---------X---------X---------X---------X---------X---------X
                         
                        No actionmapping da action AlterarLivroAction no struts-config.xml:
                         
                                <action path="/AlterarLivro"
                                        name="LivroActionForm"  type="controles.Actions.AlterarLivroAction" 
                                        input="/telaAlteracaoLivro.jsp"
                                        scope="request" validate="true">   //TROQUEI POR scope="session"
                                        <forward name="livroAlterado"       path="/telaConfirmacaoAlteracaoLivro.jsp"/>               
                                </action>      
                         
                        Deu erro de NullPointerException.
                         
                        ---------X---------X---------X---------X---------X---------X---------X---------X---------X---------X---------X
                         
                        O problema está na implementação da action que acho que não tô sabendo fazer.
                        Minha action tá assim:
                         
                        public class AlterarLivroAction extends org.apache.struts.action.Action {
                           
                            private final static String SUCCESS = "livroAlterado";
                           
                            public ActionForward execute(ActionMapping mapping, ActionForm  form,
                                    HttpServletRequest request, HttpServletResponse response)
                                    throws Exception {
                               
                                LivroActionForm livroForm = (LivroActionForm) form;
                                Livro livro = new Livro();
                                BeanUtils.copyProperties(livro, livroForm);
                                MidiaDAO operacao = new MidiaDAO();
                                operacao.alterarLivro(livro);
                                operacao.fechaConexao();
                                request.setAttribute("livro", livro);
                                return mapping.findForward(SUCCESS);          
                            }
                        }

                        Não sei mais o que faço. Acho que vou desistir.
                         
                        Não sei o que tá acontecendo.
                         
                        Bom, se ainda tiver paciência prá me ajudar te agradeço muito rsrsrsr.
                         
                        Vlw.
                         
                        Em 11/06/08, Michel Antunes <antunesmichel@...> escreveu:

                        Para usar sessão, você precisa alterar o trecho:"...scope="request" ..." para "...scope="session" ..." que encontra-se nas páginas e no xml de configuração do struts.

                        [ ]'s,
                        Michel



                        2008/6/10 Mônica Bolsas da Rocha <monicabolsasr@...>:

                        Oi Michel,
                         
                        Mudei algumas coisas, mais ou menos baseado no que vc me explicou. Mas ainda não tô conseguindo o que quero que é: exibir no vetor de erros formulário de alteração o campo deixado em branco, mas manter os campos válidos preenchidos. Aí voltei o código como tava prá ver se com a sua ajuda posso ir mudando aos poucos.
                         
                        Vou descrever a rotina da alteração em passos, numerando e descrevendo cada passo, e logo abaixo mostrando as classes envolvidas ok ?? Assim qdo vc me responder, poderá mudar o código em cima do que te mostrei com destaque para eu saber onde mudar tudo bem ??? Ao final de tudo estará também o trecho do meu struts-config.xml prá vc me orientar na alteração tb. Também estou mandando as telas em anexo prá vc ver a nevegação como rola.
                         
                        Segue então a rotina da alteração de livro:
                         
                        1 - No menu de catálogo de livros, após escolher "alteração de livro" e submeter a jsp, é executada a action ListarLivrosAlteracaoAction que lista os livros cadastrados na jsp listaAlteracaoLivros.jsp.
                         
                        public class ListarLivrosAlteracaoAction extends org.apache.struts.action.Action {
                         
                            private final static String SUCCESS = "listaAlteracaoLivros";
                           
                            public ActionForward execute(ActionMapping mapping, ActionForm  form,
                                    HttpServletRequest request, HttpServletResponse response) throws Exception {

                                LinkedList livros = new LinkedList();
                                MidiaDAO operacao = new MidiaDAO();
                                livros = operacao.listarLivros();
                                request.setAttribute("livros", livros);
                                return (mapping.findForward(SUCCESS));
                            }
                        }

                        2 - a jsp listaAlteracaoLivros.jsp é exibida e possui, para cada item da lista (um livro), um rádio associado ao código do livro que será passado à action AcionarAlteracaoLivro para obter o livro. Coloquei também nesta jsp a linha em vermelho para recuperar o valor do radio através de seu ActionForm OpcaoAlteracaoActionForm.
                         
                        listaAlteracaoLivros.jsp
                        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
                           "http://www.w3.org/TR/html4/loose.dtd">
                        <%@ page contentType="text/html" pageEncoding="UTF-8"%>
                        <%@ taglib uri="/WEB-INF/struts-bean" prefix="bean" %>  
                        <%@ taglib uri="/WEB-INF/struts-html" prefix="html" %>  
                        <%@ taglib uri="/WEB-INF/struts-logic" prefix="logic" %>
                         
                        <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  
                        <jsp:useBean id="opcao" scope="request" class="controles.ActionForms.OpcaoAlteracaoActionForm"/>
                        <html>
                            <head>
                                <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                <title><bean:message key="titulo.lista.alteracao.livro"/></title>
                            </head>
                            <body>
                                <center><h1><bean:message key="cabecalho.lista.alteracao.livro"/></h1><center>
                                <html:form action="/AcionarAlteracaoLivro.do">  
                                    <logic:present name="livros"/>
                                        <table border="1">  
                                            <tr>  
                                                <td>Código          </td>  
                                                <td>ISBN            </td>  
                                                <td>Título          </td>  
                                                <td>Autor           </td>  
                                                <td>Assunto         </td>  
                                                <td>Editora         </td>  
                                                <td>Nº Edição       </td>  
                                                <td>Ano             </td>  
                                                <td>Total de Páginas</td>  
                         
                                                <td>Tipo de Mídia   </td>  
                                            </tr>
                                            <logic:iterate id="livro" indexId="index" scope="request" name="livros">
                                            <tr>   
                                                <td>
                                                    <c:set var="radio" value="${livro.codigo}"/>
                                                    <html:radio name="opcao" property="opcao" value="${radio}"/>
                                                    <bean:write name="livro" property="codigo"    /></td>
                         
                                                <td><bean:write name="livro" property="isbn"      /></td>
                                                <td><bean:write name="livro" property="titulo"    /></td>
                                                <td><bean:write name="livro" property="autor"     /></td>
                                                <td><bean:write name="livro" property="assunto"   /></td>
                                                <td><bean:write name="livro" property="editora"   /></td>
                                                <td><bean:write name="livro" property="numEdicao" /></td>
                                                <td><bean:write name="livro" property="ano"       /></td>
                                                <td><bean:write name="livro" property="qtdPaginas"/></td>
                                                <td><bean:write name="livro" property="tipoMidia" /></td>
                                            </tr>
                                            </logic:iterate>   
                                        </table>       
                                        <html:submit property="botao" value="Alterar Livro">
                                            <bean:message key="botao.lista.alteracao.livro.sumit"/>

                                        </html:submit>  
                                </html:form>  
                            </body>
                        </html>
                         
                        OpcaoAlteracaoActionForm
                         
                        public class OpcaoAlteracaoActionForm extends org.apache.struts.action.ActionForm {

                            private String opcao; // mesmo nome da propriedade name do rádio em listaLivrosalteracao.jsp

                            public String getOpcao() {
                                return opcao;
                            }

                            public void setOpcao(String opcao) {
                                this.opcao = opcao;
                            }
                        }

                        3 - ao selecionar um radio na listaAlteracaoLivros.jsp e dar submit, é chamada a action AcionarAlteracaoLivroAction que receberá o valor do radio marcado através de OpcaoAlteracaoActionForm e fará a busca do livro desejado para editá-lo na jsp telaAlteracaoLivro.jsp.

                        public class AcionarAlteracaoLivroAction extends org.apache.struts.action.Action {
                           
                            private final static String SUCCESS = "telaAlteracaoLivro";
                           
                            public ActionForward execute(ActionMapping mapping, ActionForm  form,
                                    HttpServletRequest request, HttpServletResponse response) throws Exception {

                                String opcao;
                                OpcaoAlteracaoActionForm opcaoForm = (OpcaoAlteracaoActionForm)form;
                                opcao = opcaoForm.getOpcao();

                                Livro livro = new Livro();
                                MidiaDAO operacao = new MidiaDAO();      
                                livro = operacao.obterLivro(Integer.parseInt(opcao));
                                operacao.fechaConexao();
                                request.setAttribute("livro", livro);
                                return mapping.findForward(SUCCESS);
                            }
                        }

                        telaAlteracaoLivro.jsp

                        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
                           "http://www.w3.org/TR/html4/loose.dtd">
                        <%@ page contentType="text/html" pageEncoding="UTF-8"%>
                        <%@ taglib uri="/WEB-INF/struts-bean" prefix="bean" %>  
                        <%@ taglib uri="/WEB-INF/struts-html" prefix="html" %>  
                        <%@ taglib uri="/WEB-INF/struts-logic" prefix="logic" %>
                         
                        <jsp:useBean id="livro" scope="request" class="entidades.Livro"/>  // MUDEI AQUI
                        <html>  
                            <head>  
                            <title><bean:message key="titulo.alteracao.livro"/></title>  
                            </head>  
                            <body>  
                                <h1><bean:message key="cabecalho.alteracao.livro"/></h1>  
                                <html:errors/><!--LISTA OS ERROS DE PREENCHIMENTO DOS CAMPOS -->
                                <html:form action="/AlterarLivro.do" focus="isbn">  
                                    <table>  
                                        <tr>  
                         
                                            <html:hidden name="livro" property="codigo"/>

                                            <td>Código:</td>
                                            <td><bean:write name="livro" property="codigo"/></td>  
                                        </tr>  
                                        <tr>  
                                            <td >ISBN:</td>  
                                            <td><html:text name="livro" property="isbn"/></td>  
                                        </tr>  
                                        <tr>  
                                            <td >Título:</td>  
                                            <td><html:text name="livro" property="titulo"/></td>  
                                        </tr>  
                                        <tr>  
                                            <td >Autor:</td>  
                                            <td><html:text name="livro" property="autor"/></td>  
                                        </tr>  
                                        <tr>  
                                            <td >Assunto:</td>  
                                            <td><html:text name="livro" property="assunto"/></td>  
                                        </tr>  
                                        <tr>  
                                            <td >Editora:</td>  
                                            <td><html:text name="livro" property="editora"/></td>  
                                        </tr>  
                                        <tr>  
                                            <td >Nº Edição:</td>  
                                            <td><html:text name="livro" property="numEdicao"/></td>  
                                        </tr>  
                                        <tr>  
                                            <td >Ano:</td>  
                                            <td><html:text name="livro" property="ano"/></td>  
                                        </tr>  
                                        <tr>  
                                            <td>Total de Páginas:</td>  
                                            <td><html:text name="livro" property="qtdPaginas"/></td>  
                                        </tr>
                                        <tr>   
                                            <td>Tipo de Mídia:</td>  
                                            <td><html:text name="livro" property="tipoMidia"/></td>  
                                        </tr>
                                    </table>  
                                    <html:submit><bean:message key="botao.sumit"/></html:submit>  
                                </html:form>  
                            </body>  
                        </html>

                        4 - a jsp telaAlteracaoLivro.jsp chama a action AlterarLivroAction que altera o livro e chama a jsp telaConfirmacaoAlteracaoLivro.jsp.

                        public class AlterarLivroAction extends org.apache.struts.action.Action {
                           
                            private final static String SUCCESS = "livroAlterado";
                           
                            public ActionForward execute(ActionMapping mapping, ActionForm  form,
                                    HttpServletRequest request, HttpServletResponse response)
                                    throws Exception {

                                LivroActionForm livroForm = (LivroActionForm) form;
                                Livro livro = new Livro();
                                BeanUtils.copyProperties(livro, livroForm);
                                MidiaDAO operacao = new MidiaDAO();
                                operacao.alterarLivro(livro);
                                operacao.fechaConexao();
                                request.setAttribute("livro", livro);
                                return mapping.findForward(SUCCESS);
                            }
                        }

                        telaConfirmacaoAlteracaoLivro.jsp
                        <%@ taglib uri="/WEB-INF/struts-html" prefix="html" %>   
                        <%@ taglib uri="/WEB-INF/struts-bean" prefix="bean" %>  
                         
                        <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  
                        <jsp:useBean id="livro" scope="request" class="entidades.Livro"/>  
                        <html>  
                            <head>  
                                <title><bean:message key="titulo.confirmacao.alteracao.livro"/></title>  
                            </head>  
                            <center>
                                <bean:message key="cabecalho.confirmacao.alteracao.livro"/>  
                            </center>
                            <body>  
                                CÓDIGO:             <c:out value="${livro.codigo}"/><br>  
                                ISBN:                  <c:out value="${livro.isbn}"/><br>  
                                TÍTULO:               <c:out value="${livro.titulo}"/><br>  
                                AUTOR:               <c:out value="${livro.autor}"/><br>  
                                ASSUNTO:           <c:out value="${livro.assunto}"/><br>  
                                EDITORA:            <c:out value="${livro.editora}"/><br>  
                                Nº EDIÇÃO:         <c:out value="${livro.numEdicao}"/><br>  
                                ANO:                  <c:out value="${livro.ano}"/><br>
                                Nº DE PÁGINAS: <c:out value="${livro.qtdPaginas}"/><br>  
                                TIPO DE MÍDIA:   <c:out value="${livro.tipoMidia}"/><br>
                                <br>
                                <bean:message key="msg.confirma.alteracaoLivro"/>
                            </body>  
                        </html>
                         
                        struts-config.xml

                                <action path="/ListarLivrosAlteracao"
                                        name="OpcaoAlteracaoActionForm"
                                        type="controles.Actions.ListarLivrosAlteracaoAction" 
                                        scope="request"         validate="false">  
                                        <forward name="listaAlteracaoLivros"       path="/listaAlteracaoLivros.jsp"/>               
                                </action>      

                                <action path="/AcionarAlteracaoLivro"
                                        name="OpcaoAlteracaoActionForm" 
                                        type="controles.Actions.AcionarAlteracaoLivroAction" 
                                        scope="request"         validate="false">  
                                        <forward name="telaAlteracaoLivro"       path="/telaAlteracaoLivro.jsp"/>               
                                </action>      

                                <action path="/AlterarLivro"
                                        name="LivroActionForm"  type="controles.Actions.AlterarLivroAction" 
                                        input="/telaAlteracaoLivro.jsp"
                                        scope="request" validate="true">  
                                        <forward name="livroAlterado"       path="/telaConfirmacaoAlteracaoLivro.jsp"/>               
                                </action>      

                        PROBLEMA:

                        na jsp telaAlteracaoLivro.jsp, que quando faço alteração nos campos normalmente, respeitando os tipos dos campos, e dou submit, a alteração é concluída e exibida certinha na jsp telaConfirmacaoAlteracaoLivro.jsp.

                        Mas caso deixe um em branco, e os demais preenchidos, o vetor de erro gerado por LivroActionForm realmente exibe só o campo que não foi preenchido, mas zera todos os outros campos. Entendi que tenho que resolver com sessao mas não tô sabendo como fazer. Por isso estou mostrando os códigos prá ver se vc pode me ajudar alterando esses códigos que aí estão sacou ????

                        É isso Michel. Mais uma vez, se puder me ajudar, te agradeço. E desculpa a limitação mas é que tô começando em desenvolvimento web e struts e não tenho ainda muita noção dessa coisa de sessão. Por isso pareço meio burrinha prá entender rsrsrs. Se puder ter paciência e puder me ajudar serei eternamente grata.
                         
                        Grande Abraço,
                        Mônica.
                         
                         
                         
                         
                         
                         
                         
                         
                         
                         
                         
                         
                         
                         
                         
                         
                        Em 10/06/08, Michel Antunes <antunesmichel@...> escreveu:

                        É por ai mesmo.
                        O problema é o seguinte:
                        <jsp:useBean id="livro" scope="session" class="controles.ActionForms
                        .LivroActionForm"/>

                        Como você está usando o mesmo formulário para incluir e alterar acontece este problema, devido ao fato do formulário anterior ainda não ter sido destruído pela JVM.

                        Tente mudar o identificador para outro nome, exemplo:
                        <jsp:useBean id="livroAlt" scope="session" class="controles.ActionForms
                        .LivroActionForm"/>

                        Ou criar um novo formulário para a alteração.
                         


                        2008/6/10 Mônica Bolsas da Rocha <monicabolsasr@...>:

                        Oi Michel,
                         
                        Esse probleminha eu já resolvi. Pura distração rsrsrsrs. Um outro colega da lista me deu a seguinte dica:
                         
                        1 - na jsp que exibe o formulário para alteração com os dados do livro:

                        ao invés de:
                        <jsp:useBean id="livro" scope="request" class="controles.ActionForms.LivroActionForm"/>
                        eu colocaria:
                        <jsp:useBean id="livro" scope="session" class="controles.ActionForms.LivroActionForm"/>

                        2 - na action AlterarLivro.do da jsp acima:

                        ao invés de:
                        request.setAttribute("livro", livro);
                        eu colocaria:
                        session.setAttribute("livro", livro);

                        3 - no struts-config.xml:

                        ao invés de :
                        <action path="/AlterarLivro"     
                                    name="LivroActionForm"  type="controles.Actions.AlterarLivroAction"
                                    input="/telaAlteracaoLivro.jsp"
                                    scope="request" validate="true">
                                    <forward name="livroAlterado"       path="/telaConfirmacaoAlteracaoLivro.jsp"/>
                        </action>  
                        eu colocaria:
                        <action path="/AlterarLivro"
                                     name="LivroActionForm"  type="controles.Actions.AlterarLivroAction"       
                                     input="/telaAlteracaoLivro.jsp"
                                     scope="session" validate="true">
                                     <forward name="livroAlterado"       path="/telaConfirmacaoAlteracaoLivro.jsp"/>
                        </action>        
                         
                        É assim mesmo que tenho que fazer ????
                         
                        Bom, tava começando a fazer essas mudanças, começando pela jsp.
                         
                        coloquei a tag abaixo no lugar da antiga que tinha scope="request":
                        <jsp:useBean id="livro" scope="session" class="controles.ActionForms.LivroActionForm"/>
                         
                        Aí já me deu o seguinte erro na jsp:"UseBean: Duplicate bean name: livro".
                         
                        Pode me ajudar mais uma vez Michel :P ??? Te agradeço muito.
                         
                        [ ]'s,
                        Mônica.

                         
                        Em 10/06/08, Michel Antunes <antunesmichel@...> escreveu:

                        Monica, no email anterior voce mostrou este trecho abaixo:

                        "...
                           <action path="/AlterarLivro"
                                 name="LivroAlteracaoActionForm"  type="controles.Actions.AlterarLivroAction"  
                                 input="/telaAlteracaoLivro.jsp" 
                                 scope="request" validate="true">   
                                 <forward name="livroAlterado" path="/telaConfirmacaoAlteracaoLivro.jsp"/>               
                           </action>
                        ..."

                        O problema é que o formulário "
                        LivroAlteracaoActionForm" que está usando não existe, tente usar o "LivroActionForm".

                        [ ]'s,
                        Michel

                        .

                         


                        --
                        [ ]'s,
                        Michel Antunes
                         

                        .

                         



                        --

                      Your message has been successfully submitted and would be delivered to recipients shortly.