7 Replies Latest reply on Dec 21, 2007 1:48 PM by Diego Coronel

    Transactional Method Flush

    Diego Coronel Apprentice

      Hey, how can i make a method flush when it runs with success.

      I have managed Bean

      @Name("cadastroFornecedoresBean")
      @Scope(ScopeType.SESSION)
      public class CadastroFornecedoresBean {
       @In(create = true, value = "#{almoxarifadoFacade}")
       private IAlmoxarifadoFacade almoxarifadoFacade;
      .
      .
      .
      try {
       almoxarifadoFacade.persistFornecedor(fornecedor);
       resultList = new ArrayList<Fornecedor>();
       fornecedor = new Fornecedor();
       facesMessages.addFromResourceBundle(FacesMessage.SEVERITY_INFO, "#{msg.SUCESSO}");
       }
       catch (Exception e){
       //How to get the exception ?
       }
      
      


      my facade

      @Name("almoxarifadoFacade")
      public class AlmoxarifadoFacade implements IAlmoxarifadoFacade {
      .
      .
      .
      @Transactional
       public void persistFornecedor(Fornecedor fornecedor) {
       em.persist(fornecedor);
       }
      


      so.. if my persist throw any exception my managed bean isnt getting it.. the entityManager flush after my managed bean method, how can i do to my facade auto flush when the method finish ??

      Sry about my english.

      Ty

        • 2. Re: Transactional Method Flush
          Diego Coronel Apprentice

          yeah, i tried that, it works, but im looking for something like when my method finish without exception the flush occurs automatic... is there any way ? because i dont want to add in all my facade methos em.flush.

          • 3. Re: Transactional Method Flush
            Pete Muir Master

            Not that I know of.

            • 4. Re: Transactional Method Flush
              Diego Coronel Apprentice

              ok, i did the change.

              my managed Bean

               public String merge() {
               try {
               almoxarifadoFacade.mergeFornecedor(fornecedor);
               fornecedor = new Fornecedor();
               new ArrayList<Fornecedor>();
               facesMessages.addFromResourceBundle(FacesMessage.SEVERITY_INFO, "#{msg.sucesso}");
               return "sucesso";
               }
               catch (Exception e){
               facesMessages.addFromResourceBundle(FacesMessage.SEVERITY_WARN, "#{msg.error}");
               }
               return null;
               }
              


              and my facade:

               public void mergeFornecedor(Fornecedor fornecedor) {
               em.merge(fornecedor);
               em.flush();
               }
              



              but now my problem is that seam is setting a msg, and i just want my message on xhtml.

              Operação Falhou. Favor verificar os dados --> this is my message
              
              Transaction failed --> seam message, (i dont want this.. :P)
              


              is there any way to cancel seam message ?


              • 5. Re: Transactional Method Flush
                Diego Coronel Apprentice

                any way to stop these auto messages ? i just wanna show only my messages.

                • 6. Re: Transactional Method Flush
                  Alex Savitsky Novice

                  Find the message's key, and redefine it in your own messages.properties as blank. Worked for me to get rid of login messages

                  HTH,

                  Alex

                  • 7. Re: Transactional Method Flush
                    Diego Coronel Apprentice

                    ty, i got then...

                    
                    validator.assertFalse=falha na valida\u00E7\u00E3o
                    validator.assertTrue=falha na valida\u00E7\u00E3o
                    validator.future=deve ser uma data futura
                    validator.length=comprimento deve estar entre {min} e {max}
                    validator.max=deve ser menor ou igual a {value}
                    validator.min=deve ser maior ou igual a {value}
                    validator.notNull=n\u00E3o deve ser nulo
                    validator.past=deve ser uma data passada
                    validator.pattern=deve seguir o padr\u00E3o "{regex}"
                    validator.range=deve estar entre {min} e {max}
                    validator.size=tamanho deve estar entre {min} e {max}
                    validator.email=deve ser um endere\u00E7o de e-mail bem formado
                    
                    org.jboss.seam.loginFailed=Falha no Login
                    org.jboss.seam.loginSuccessful=
                    
                    org.jboss.seam.TransactionFailed=Falha na transa\u00E7\u00E3o
                    org.jboss.seam.NoConversation=O fluxo terminou, expirou ou estava processando outro pedido
                    org.jboss.seam.IllegalNavigation=Navega\u00E7\u00E3o Ilegal
                    org.jboss.seam.ProcessEnded=Processo \#0 j\u00E1 est\u00E1 encerrado
                    org.jboss.seam.ProcessNotFound=Processo \#0 n\u00E3o encontrado
                    org.jboss.seam.TaskEnded=Tarefa \#0 j\u00E1 est\u00E1 encerrada
                    org.jboss.seam.TaskNotFound=Tarefa \#0 n\u00E3o encontrada
                    org.jboss.seam.NotLoggedIn=Por favor, primeiro realize o log in
                    
                    javax.faces.component.UIInput.CONVERSION=o valor n\u00E3o pode ser convertido para o tipo esperado
                    javax.faces.component.UIInput.REQUIRED=preenchimento obrigat\u00F3rio
                    javax.faces.component.UIInput.UPDATE=Ocorreu um erro durante o processamento da informa\u00E7\u00E3o enviada
                    javax.faces.component.UISelectOne.INVALID=valor inv\u00E1lido
                    javax.faces.component.UISelectMany.INVALID=valor inv\u00E1lido
                    
                    javax.faces.converter.BigDecimalConverter.DECIMAL=o valor deve ser um n\u00FAmero
                    javax.faces.converter.BigDecimalConverter.DECIMAL_detail=o valor deve ser um n\u00FAmero decimal com um ou mais d\u00EDgitos, opcionalmente seguido por um ponto e a fra\u00E7\u00E3o, ex. {1}
                    javax.faces.converter.BigIntegerConverter.BIGINTEGER=o valor deve ser um n\u00FAmero inteiro
                    javax.faces.converter.BigIntegerConverter.BIGINTEGER_detail=o valor deve ser um n\u00FAmero inteiro com um ou mais d\u00EDgitos
                    javax.faces.converter.BooleanConverter.BOOLEAN=valor deve ser verdadeiro ou falso
                    javax.faces.converter.BooleanConverter.BOOLEAN_detail=valor deve ser verdadeiro ou falso (qualquer outro valor diferente de verdadeiro ser\u00E1 falso)
                    javax.faces.converter.ByteConverter.BYTE=valor deve ser um n\u00FAmero entre 0 e 255
                    javax.faces.converter.ByteConverter.BYTE_detail=valor deve ser um n\u00FAmero entre 0 e 255
                    javax.faces.converter.CharacterConverter.CHARACTER=valor deve ser um caractere
                    javax.faces.converter.CharacterConverter.CHARACTER_detail=valor deve ser um caractere ASCII v\u00E1lido
                    javax.faces.converter.DateTimeConverter.DATE=valor deve ser uma data
                    javax.faces.converter.DateTimeConverter.DATE_detail=valor deve ser uma data, ex. {1}
                    javax.faces.converter.DateTimeConverter.TIME=valor deve ser uma hora
                    javax.faces.converter.DateTimeConverter.TIME_detail=valor deve ser uma hora, ex. {1}
                    javax.faces.converter.DateTimeConverter.DATETIME=valor deve ser uma data e uma hora
                    javax.faces.converter.DateTimeConverter.DATETIME_detail=valor deve ser uma data e uma hora, ex. {1}
                    javax.faces.converter.DateTimeConverter.PATTERN_TYPE=um padr\u00E3o ou tipo deve ser especificado para converter o valor
                    javax.faces.converter.DoubleConverter.DOUBLE=valor deve ser um n\u00FAmero
                    javax.faces.converter.DoubleConverter.DOUBLE_detail=valor deve ser um n\u00FAmero entre 4.9E-324 e 1.7976931348623157E308
                    javax.faces.converter.EnumConverter.ENUM=valor deve poder ser convertido para um enum
                    javax.faces.converter.EnumConverter.ENUM_detail=valor deve poder ser convertido para um enum ou de um enum que contenha a constante {1}
                    javax.faces.converter.EnumConverter.ENUM_NO_CLASS=valor deve poder ser convertido para um enum ou de um enum, por\u00E9m nenhum enum foi fornecido
                    javax.faces.converter.EnumConverter.ENUM_NO_CLASS_detail=valor deve poder ser convertido para um enum ou de um enum, por\u00E9m nenhum enum foi fornecido
                    javax.faces.converter.FloatConverter.FLOAT=valor deve ser um n\u00FAmero
                    javax.faces.converter.FloatConverter.FLOAT_detail=valor deve ser um n\u00FAmero entre 1.4E-45 e 3.4028235E38
                    javax.faces.converter.IntegerConverter.INTEGER=valor deve ser um n\u00FAmero inteiro
                    javax.faces.converter.IntegerConverter.INTEGER_detail=valor deve ser um n\u00FAmero inteiro entre -2147483648 e 2147483647
                    javax.faces.converter.LongConverter.LONG=valor deve ser um n\u00FAmero inteiro
                    javax.faces.converter.LongConverter.LONG_detail=valor deve ser um n\u00FAmero inteiro entre -9223372036854775808 e 9223372036854775807
                    javax.faces.converter.NumberConverter.CURRENCY=valor deve ser um valor monet\u00E1rio
                    javax.faces.converter.NumberConverter.CURRENCY_detail=valor deve ser um valor monet\u00E1rio, ex. {1}
                    javax.faces.converter.NumberConverter.PERCENT=valor deve ser um percentual
                    javax.faces.converter.NumberConverter.PERCENT_detail=valor deve ser um percentual, ex. {1}
                    javax.faces.converter.NumberConverter.NUMBER=valor deve ser um n\u00FAmero
                    javax.faces.converter.NumberConverter.NUMBER_detail=valor deve ser um n\u00FAmero
                    javax.faces.converter.NumberConverter.PATTERN=valor deve ser um n\u00FAmero
                    javax.faces.converter.NumberConverter.PATTERN_detail=valor deve ser um n\u00FAmero
                    javax.faces.converter.ShortConverter.SHORT=valor deve ser um n\u00FAmero inteiro
                    javax.faces.converter.ShortConverter.SHORT_detail=valor deve ser um n\u00FAmero inteiro entre -32768 e 32767
                    
                    javax.faces.validator.DoubleRangeValidator.MAXIMUM=valor deve ser menor ou igual a {0}
                    javax.faces.validator.DoubleRangeValidator.MINIMUM=valor deve ser maior ou igual a {0}
                    javax.faces.validator.DoubleRangeValidator.NOT_IN_RANGE=valor deve estar entre {0} e {1}
                    javax.faces.validator.DoubleRangeValidator.TYPE=valor n\u00E3o corresponde ao tipo correto
                    javax.faces.validator.LengthValidator.MAXIMUM=value is must be shorter than or equal to {0} characters
                    javax.faces.validator.LengthValidator.MINIMUM=value is must be longer than or equal to {0} characters
                    javax.faces.validator.LongRangeValidator.MAXIMUM=valor deve ser menor ou igual a {0}
                    javax.faces.validator.LongRangeValidator.MINIMUM=valor deve ser maior ou igual a {0}
                    javax.faces.validator.LongRangeValidator.NOT_IN_RANGE=valor deve estar entre {0} e {1}
                    javax.faces.validator.LongRangeValidator.TYPE=valor n\u00E3o corresponde ao tipo correto