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

    Transactional Method Flush

    diegocoronel

      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

        • 1. Re: Transactional Method Flush
          pmuir

          em.flush()

          • 2. Re: Transactional Method Flush
            diegocoronel

            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
              pmuir

              Not that I know of.

              • 4. Re: Transactional Method Flush
                diegocoronel

                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
                  diegocoronel

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

                  • 6. Re: Transactional Method Flush

                    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
                      diegocoronel

                      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