Atualizar um componente

Forum sobre a ferramenta Oracle JDeveloper, ADF, OAF, etc. (Não é destinado ao aprendeziado da Linguagem Java em geral)
Responder
Mick
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 69
Registrado em: Sex, 08 Fev 2008 11:20 am
Localização: São Paulo - SP

Oi pessoal...

Estou com o seguinte problema:

Eu tenho em uma página .jsp um 'selectonechoice' e um botão... quando esse botão é clicado, há um redirecionamento para uma outra página.. e nessa página existe um formulário.. onde são inseridos dados no banco... depois que o usuário coloca os dados, ele deve clicar em um botão.. que dá um commit e redireciona o usuário para página anterior (aquela página que tinha o selectonechoice), nessa página o selectonechoice deveria apresentar alguns intens .. dentre eles aquele que acabou de ser inserido... mas ele não mostra.. ou seja .. ele não atualiza...
Porém se eu fecho o browser e abro a página de novo ele atualiza...

ele não está atualizando em tempo de execução...

alguém sabe me dizer.. qual seria a melhor solução pra esse problema?...

agradeço desde já qualquer ajuda...
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

não sei como esta fazendo o seu commit mas você tera que fazer com que seu vo seja carregado novamente...

apos o seu getDBTransaction().commit(); lá no teu AM faça

Selecionar tudo

voCombo.executeQuery();
se ainda não der jeito faça isso no seu bean, mas e bem provavel que o codigo acima já resolva

Selecionar tudo

AdfFacesContext adfContext = AdfFacesContext.getCurrentInstance();
adfContext.addPartialTarget(bindingSelectOneChoice);
Mick
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 69
Registrado em: Sex, 08 Fev 2008 11:20 am
Localização: São Paulo - SP

Mas se eu fizer isso ... ele vai inserir no banco duas vezes não vai?...

Esse é o meu botão que insere os dados no banco:

Selecionar tudo

<af:commandButton actionListener="#{bindings[\'gerar_os_transporte\'].execute}"
                                  text="Gerar O.S. do Transporte"
                                  disabled="#{!bindings[\'gerar_os_transporte\'].enabled}"
                                  action="montagem_transporte"/>
e esse é o método que ele chama...

Selecionar tudo

    public void gerar_os_transporte (
                       String wplaca,
                       int wid_user_motorista,
                       int wid_user_conferente,
                       String wobservacao
                       )
                       { 
                   
            PreparedStatement plsqlBlock = null ;
                String statement;
                statement = "BEGIN pc_gerar_os_transporte(" +
                               ":1,"+
                               ":2," + 
                               ":3," + 
                               ":4 ) ;" +
                               "END;";

                plsqlBlock = getDBTransaction().createPreparedStatement(statement,0);
                       try
                       {
                           plsqlBlock.setString(1,wplaca);
                           plsqlBlock.setInt(2,wid_user_motorista);
                           plsqlBlock.setInt(3,wid_user_conferente);
                           plsqlBlock.setString(4,wobservacao);      

                          plsqlBlock.execute ();  
                       }    
                      .
                      .
                      . 
Obs: o commit eu dou dentro da procedure que eu chamei..

essa segunda opção pode ser feita mesmo se o botão estiver em uma página e o componente a ser atualizada em outra?...

Ela tem de ser feita no bean do botão que insere né?..
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

porque você não faz um metodo no bean que retorne 'montagem_transporte' no fianl e antes chame um metodo no AM que faça o seu insert ?!?!
e dai basta chamar ele apartir no action

não e uma boa pratica usar actionListener e action

como se da os valores do seu 'selectonechoice' ?!?!
não e por meio de VO e EO ?!?!
Mick
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 69
Registrado em: Sex, 08 Fev 2008 11:20 am
Localização: São Paulo - SP

ahh está.. quanto a isso td bem...

já até mudei:

Selecionar tudo

<af:commandButton
                                  text="Gerar O.S. do Transporte"
                                  disabled="#{!bindings[\'gerar_os_transporte\'].enabled}"
                                  action="#{backing_OSTransporte.Gerar}"/>

Selecionar tudo

     public String Gerar() {
        // Add event code here...
         BindingContainer bindings = getBindings();
         OperationBinding operationBinding = bindings.getOperationBinding("gerar_os_transporte");
         Object result = operationBinding.execute();
         if (!operationBinding.getErrors().isEmpty()) {
             return null;
         }
        return "montagem_transporte";
    }
Meu selectonechoice:

Selecionar tudo

<af:selectOneChoice value="#{bindings.wplaca1.inputValue}"
                                label="O.S." id="pesquisa_placa"
                                requiredMessageDetail="Selecione uma O.S.">
              <f:selectItems value="#{bindings.wplaca1.items}"
                             id="valor_selecionado"/>
            </af:selectOneChoice>
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

os meus selectOneChoice são baseados em VOs da seuinte forma..

jsp

Selecionar tudo

                  <af:selectOneChoice value="#{bindings.SeqsChvSecaoQst.inputValue}"
                                      simple="true" disabled="false">
                    <af:forEach items="#{bindings.SecaoQstVO1.rangeSet}"
                                var="row">
                      <af:selectItem value="#{row.SeqsChvSecaoQst.sequenceNumber}"
                                     label="#{row.SeqsNomSecao}"/>
                    </af:forEach>
                  </af:selectOneChoice>
page definition

Selecionar tudo

<iterator id="SecaoQstVO1Iterator" RangeSize="-1" Binds="SecaoQstVO1"
              DataControl="SegmentoClienteAMDataControl"/>

onde 'SecaoQstVO1' é uma instancia de um VO no meu AM

dai o que eu disse pra você fazer é

Selecionar tudo

getSecaoQstVO1().executeQuery();
logo apos o teu insert
Mick
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 69
Registrado em: Sex, 08 Fev 2008 11:20 am
Localização: São Paulo - SP

oi victor...

eu to tentando fazer isso que você me passou...
e até o código jsp e o pagedefinition tudo bem... mas

da onde você tiro esse método:

Selecionar tudo

getSecaoQstVO1()
?
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

getNomedoVO() que você colocou no seu AM
Mick
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 69
Registrado em: Sex, 08 Fev 2008 11:20 am
Localização: São Paulo - SP

valeu por toda ajuda!!! :D

já consegui resolver meu problema!!
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 6 visitantes