Show message

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...

Eu queria saber como é que eu faço .. pra relaciona os valores e componentes que estão na minha página .jsp com o meu backing bean... Por exemplo seu eu tenho um inputtext na minha página como eu faço pra referenciar aquele valor...Eu acho q ainda não entendi muito bem essa questão de 'UI' ... Alguém poderia me explicar como é que funciona ou me indicar um tutorial...site...

E como eu faço pra mostrar uma caixa de mensagem pro usuário, que pode escolher entre sim e não... (Aquelas típicas mensagens... por exemplo: "você deseja continuar?.. " 'yes' or 'no')

Vlw...
Qualuer ajuda será muito bem vinda!!
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

amigo
gostaria de te ajudar mas acho que não estou sendo claro ne.. de um feed back das minhas respostar para que eu possa tentar melhorar a forma de me expressar
qualquer coisa estamos ai

no codigo do seu jsp posicione o mouse em cima do seu af:inputText com um click, va para a aba 'Structure' (se não houver esta aba, va no menu view e faça ela aparecer)e repare que o jdev já selecionou o seu mesmo objeto nessa aba structure dai e so você clicar com o botao direito do mouse depois ir em 'properties' dai na aba 'Advanced Properties' em 'general' tera o atributo 'Binding' dai e so você apontar para um classe que já tenha criado pelo seu faces-config e dar um nome para o seu objeto que sera criado nessa classe..

jsp

Selecionar tudo

<af:inputText value="#{bindings.BeclNumMtr.inputValue}"                          
              binding="#{manutencaoBemClienteBean.matricula}">
		<f:convertNumber groupingUsed="true" pattern="#,##0.00"/>
</af:inputText>	
repare que o atributo binding menciona 'manutencaoBemClienteBean' que é o alias da classe ( alias do backing bean criado la no faces-config) e depois 'matricula' que é o nome do objeto que foi criado na tua classe (backing bean) que faz referencia ao teu componente jsp

la na tua classe java ficara assim

Selecionar tudo

private CoreInputText matricula;

//pegando o valor da componente na tela
String valorDoComponenteNaTela = matricula.getValue();

para trabalhar com a interação do usuario acho que você ate pode criar um applet que dispare JOptionPane porem aqui fazemos assim..
criamos um arquivo dentro do projeto para conter as funções Java Script e chamamos elas dentro dos componentes na jsp

Selecionar tudo

//arquivo funcoesJS.js
function confirmDelete() {
  if (confirm("Confirma exclusão do registro?")) {
    return true;
  } else {
   return false;
  }
}

//JSP
<afh:script source="../js/funcoesJS.js"/>

<af:commandLink text="Deletar"
                action="#{testeBean.excluirTeste}"
                onclick="return confirmDelete();"/>	
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

amigo não 'amigA' .. hehe.. meu nome é Michele... hehe

Mas isso não vem ao caso... Victor ... eu quero te agradecer.. você tem me ajudado muito ...
principalmente com esse último post... eu não fazia a mínima idéia de como eu ia fazer pra fazer uma simples janelinha de confirmação... É que como eu to começando agora no jdeveloper... pra mim tudo ainda é muito complicado... esse monte de binding pra lá e pra cá.. fica meio difícil de entender... mas agora as coisas estão ficando mais claras.. hehe;..

Consegui fazer o que você me passou... certinho...

Agora só to com outro probleminha...

Por exemplo... eu quero chamar uma function SQL no meu backing bean... assim que eu clicar no botão... e dependendo do resultado que essa function me retornar ... eu devo fazer uma determinada ação... mas quando fui tentar fazer isso... tudo compilo certinho.. mas quando eu clico no botão dá uma série de erros... dá uma olhada no meu códgo .. e vê o que você acha..E como eu faço pra chamar a janela de confirmação de dentro do backing bean?... é só eu criar um binding pro afh:script?..

Selecionar tudo


    private CoreOutputText carga_retorno;
    private CoreOutputText id_solicitacao;

    public String commandButton_action() {
        // Add event code here...
        
        String wservico = null;    
        String wid_solicitacao = (String)id_solicitacao.getValue();
        if (wid_solicitacao != null) {
         PreparedStatement plsqlBlock = null ;
                  String statement;
                  statement = "SELECT JMS_SERVICO("+
                              ":1"+
                              ") FROM DUAL";
                 plsqlBlock = getDBTransaction().createPreparedStatement(statement,0);
                 try
                 {
                    plsqlBlock.setInt(1,Integer.parseInt(wid_solicitacao));
                    ResultSet resultado= plsqlBlock.executeQuery(statement);
                    while(resultado.next()){
                        wservico=resultado.getString("descricao");
                    }
                 }
                 catch (SQLException sqlException)
                 {
                     throw new SQLStmtException (CSMessageBundle.class,
                                                 CSMessageBundle.EXC_SQL_EXECUTE_COMMAND,
                                                 statement,
                                                 sqlException);
                 }
                 finally
                 {
                  try
                  {
                     plsqlBlock.close();
                  }
                  catch (SQLException e)
                  {
                    e.printStackTrace();
                  }
                 }
            carga_retorno.setValue(wservico);
        } else {
        carga_retorno.setValue("teste");}
        return null;
    }
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

desculpa minha amiga...

para para tudo
você ta usando o ADF BC ?? tem application module na sua aplicação ??

1 - getDBTransaction() não sei o que você fez para conseguir acessar este método em um bean, mas digo que não segue as boas praticas de programação pois a classe de controle deve chamar um método do teu AM que então fara o acesso ao banco
exemplo de um bean chamando um metodo no AM

Selecionar tudo

        BindingContainer bindings = getBindings();
        OperationBinding operationBinding = bindings.getOperationBinding("nomeDoMetodoNoAM");        
        operationBinding.execute();
2 - você pode criar um outro componente afh:script e ao invés de apontar para um arquivo colocar a função la e dai atraves de um binding executar esse cara, porem digo que tambem não e legal, Js é um client side, e dai você quer invocar uma função apartir da sua classe de controle que esta em server side

no exemplo que te enviei a pop up trava ou não a execução do método que e chamado pelo botão, no caso deletar
o que você quer fazer realmente ?

você pode implmentar uma janela de dialog
criei um jsp e de nome a navegação da seguinte forma: 'dialog:qualquerCoisa'. No seu botão que chamará ela você deve colocar a opção useWindows=true e dai você tera um poder maior sobre a tua dialog porem alerto você para não fazer isso... explique sua situação e tentaremos achar um novo caminho

qualquer coisa estamos ai
fica na paz
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

Selecionar tudo

SELECT JMS_SERVICO(:1) FROM DUAL
essa seria sua query ??
não sei o que ela faria..
posta os erros gerados ??

seria bom você dar um close no teu result set tambem
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 usando sim ADF BC e na minha aplicação tem aplication module também....
Talvez então eu estja usando as maneiras erradas pra fazer o que eu quero...

Como eu faço pra criar um método AM...?.. porque o único método que eu tenho aqui .. e que eu consigo chamar dessa maneira que você explico, com o "bindings.getOperationBinding", é o método "executewithparams" que é o resultado do select que está no "SQL statement" do meu 'View Object Editor' Dá prar criar outros métodos além desse...?

Mas enfim.. eu vou explicar oque é que eu preciso fazer... e qm sabe você não me indica uma solução mais adequada, do que essa que eu estou tentando fazer...

Eu preciso verificar no banco uma determinada condição... Por exemplo: Eu tenho uma tabela na minha página jsp.... assim que o usuário selecionar determinado elemento dessa tabela... eu preciso pegar esse elemento e fazer uma pesquisa no banco... Dependendo do resultado dessa pesquisa... eu devo mostrar uma mensagem pro usuário .. de que o que ele quer fazer é possível ou não...
Depois eu preciso pegar novamente esse elemento da tabela .. fazer uma nova pesquisa no banco .. pra verificar uma outra condição.. e então fazer um calculo ... que eu devo mostrar pro usuário....
Deu pra entender?...
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

vamo la... rs

o seu AM é um XML que da origem a uma interface e uma classe java
quando você vai nessa classe e implementa um metodo ele deve ser publicado no client interface para que possa ser acessado do seu bean e tambem deve ser feito um methodAciton no pageDefinition do seu jsp

passo a passo
1 - double click no seu AM.xml
2 - na lista a esquerda tem a sessão 'client interface'. O seu método implementado deve estar na lista da esquerda basta selecionar e colocar na lista da direita
3 - Click com o botão direito no seu jsp e va em 'go to page definition'
4 - Na aba 'structure' procure a sessão 'bindings' e click com o botão direito e va em 'insert inside bindings' depois va em 'methodAction'
5 - escolha o AM que contem o método e depois escolha o método que fora implementado

agora você esta apta a chamar o método pelo bean daquela maneira que lhe mostrei acima


o executewithparams e referente a um VO que esteja dentro do seu AM, e esse VO tem de conter bindingsVariables ou seja uma clausula where com ? (pontos de interrogação estilo o prepared statment do java) que serão substituidos por parametros na hora em que a query do VO for executada

os VOs tem implementações java tambem inclusive de ROW, o que lhe permite não ter de fazer select direto no banco
você pode de dentro do seu AM dar um getVO() e depois de getVO() dar um getCurrentRow() e ai você tera a linha selecionada na sua tabela
se você me der mais dados tento melhorar a minha solução para teu problema ai

fica na paz
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á.. agora entendi... a questão dos métodos....

Bom.. então.. quando eu for criar esse método.. dentro dele eu posso acessar uma function.. do jeito que eu postei no código lá em cima?.. ou não?...

É que eu uso essa function pra fazer uma verificação no banco segundo dados que o usuário selecionar... depois com os dados que essa function me retornar.. eu preciso mostrar uma mensagem de confirmação pra ele.. se for confirmado.. eu preciso fazer uma nova busca através de uma outra function... e com esses dados eu vou fazer um cálculo... e mostrar na página .jsp pro usuário...
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

acredito que seu problema não sera resolvido por JS, você tera de implementar um JSP dialog que retorne as escolhas do usuario

procure algo de como implementar uma LOV que dai você vera o atributo returnListener em ação

quando as menssagens que você quiser enviar não precisar de decisões
faça assim

coloque <af:messages/> logo apos a sua tag body..
jsp

Selecionar tudo

    <afh:body>
      <af:messages/>
bean

Selecionar tudo

JSFUtils.addFacesMessage("Salvo com sucesso." , FacesMessage.SEVERITY_INFO);
JSFUtils.addFacesMessage("Informe o Grupo de Crédito." , FacesMessage.SEVERITY_ERROR);
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 com uma duvidazinha.... eu tava usando o PreparedStatement, como dá pra vê no código que eu postei ... mas daí eu tive o seguinte erro quando fui testa-la na minha página .jsp. :

Selecionar tudo

# ORA-03115: unsupported network datatype or representation 
Eu acredito que seja por causa do:

Selecionar tudo

 SELECT jms_verificar_restricao_altura(:1,:2) FROM DUAL;
Então agora eu estou tentando usar um CallableStatement, mas como é que eu faço pra chamar a conexão que já existe no jdeveloper ... pelo java ... as maneiras que eu sei... eu preciso passar todos os parâmetros da conexão... mas acredito que fazer isso seja uma besteira.. já que o jdeveloper já tem a conexão...
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

oh michele
desculpa minha ignorancia mas não entendo essa sua sintaxe

Selecionar tudo

SELECT jms_verificar_restricao_altura(:1,:2) FROM DUAL;
pelo 'jms' acredito que você esteja tentando recuperar dados de uma fila.. e isso ?!?!?!

não vejo o porque de funcionar você trocando prepared por callable, e sinceramente não faço ideia de o porque deste erro..

pelo que entendi você não ta conectando desta maneira ne ?!?! tente fazendo assim e se der o erro poste seu código pra eu tentar te ajudar

Selecionar tudo

       PreparedStatement pstmt = null;
       ResultSet rs = null;
       String strSQL;
          strSQL = 
                " SELECT 1 " +
                "  FROM SCR_BEM_PPT PPT " + 
                "   WHERE PPT.BECL_CHV_BEM_CLI = ? ";

          pstmt = getDBTransaction().createPreparedStatement(strSQL, 0);
          pstmt.setLong(1, new Long(1));
          rs = pstmt.executeQuery();
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

esse select busca a function que eu criei..
a function chama jms_verificar_restricao_altura, tem dois parâmetros e retorna um number, que eu estou jogando em uma variável int...

E eu to fazendo exatamente desse jeito que você passo...
Dá uma olhada no código:

Selecionar tudo

        PreparedStatement plsqlBlock = null ;
        String statement;
        int restricao=0;
        statement = "SELECT JMS_SERVICO("+
                       ":1,"+
                       ":2) FROM DUAL;";
        plsqlBlock = getDBTransaction().createPreparedStatement(statement,0);
        try
        {
                plsqlBlock.setInt(1,wid_pessoa);
                plsqlBlock.setString(2,wplaca);
                ResultSet resultado= plsqlBlock.executeQuery(statement);
                while(resultado.next())
                  {                
                    String s=resultado.toString();
                    restricao=Integer.parseInt(s);
                  }
        }
Ah.. um detalhe... eu fiz esse conversão no final ... de Resultset pra String.. e depois.. de String pra Int.. porque quando eu coloquei direto como ' restricao=resultado.getInt(1); ' ele acusava que o índice da coluna não existia...
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

Corrigindo..

é esse o código:

Selecionar tudo

PreparedStatement plsqlBlock = null ;
        String statement;
        int restricao=0;
        statement = "SELECT JMS_VERIFICAR_RESTRICAO_ALTURA("+
                       ":1,"+
                       ":2) FROM DUAL;";
        plsqlBlock = getDBTransaction().createPreparedStatement(statement,0);
        try
        {
                plsqlBlock.setInt(1,wid_pessoa);
                plsqlBlock.setString(2,wplaca);
                ResultSet resultado= plsqlBlock.executeQuery(statement);
                 String s=resultado.toString();
                 restricao=Integer.parseInt(s);
                
        } 
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

michele
complicou para mim..

bom se você ta chamando uma function acho q deve ser mais coerente usar o callable

Selecionar tudo

CallableStatement cs = getDBTransaction().createCallableStatement(strSQL,0);
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

Ahhh....

consegui resolver esse problema...

eu tive que registrar um parâmetro OUT ... pra receber o valor retornado pela function... não tava dando pra receber esse valor diretamente....

Selecionar tudo


        CallableStatement plsqlBlock = null ;
        String statement;
        int restricao=0;
        statement = "begin ? := JMS_VERIFICAR_RESTRICAO_ALTURA(?,?); END;";
        plsqlBlock = getDBTransaction().createCallableStatement(statement,0);
        try
        {
                plsqlBlock.registerOutParameter(1, java.sql.Types.INTEGER);
                plsqlBlock.setInt(2,wid_pessoa);
                plsqlBlock.setString(3,wplaca);
                plsqlBlock.execute();
                restricao=plsqlBlock.getInt(1);
        }
Agora só falta eu resolver os problemas das mensagens ... eu vou dar uma estudada no LOV .. que você tinha me falado... só que só uma coisa... eu prciso fazer algum import pra fazer isso que você me passo:

Selecionar tudo


JSFUtils.addFacesMessage("Salvo com sucesso." , FacesMessage.SEVERITY_INFO);
JSFUtils.addFacesMessage("Informe o Grupo de Crédito." , FacesMessage.SEVERITY_ERROR); 
porque ele não reconhece o JSFUtils...
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

Selecionar tudo

  /**
   * Get component id of the view root.
   * @return component id of the view root
   */
  public static String getRootViewComponentId() {
     return getFacesContext().getViewRoot().getId();
   }

     FacesContext ctx = getFacesContext();
     FacesMessage fm = new FacesMessage(severity,msg,null);  ctx.addMessage(getRootViewComponentId(),fm);
tenta ai qualquer coisa me fala
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

Bom ..

eu tava dando uma olhada no componente 'message' e 'messages' e pelo o que eu entendi.. o messages apresenta as mensagens no topo da página e o message apresenta mensagens próximo ao componente a que ele referencia... acho que não vai ser útil pra mim.. porque eu precisava mesmo .. daquelas janelas pop-ups .. só com o 'sim' ou 'não'.... naquele estilo mesmo do js.... Mas como eu falei .. eu vou dar mais uma estuda no lov primeiro....

Agora outra coisa... só espero não estar aborrecendo demais!!....:roll:

como eu faço pra selecionar um item num listbox e assim que eu seleciona-lo executar uma ação?... sem precisar apertar um botão?.... eu tentei usar a propriedade 'onclick'... mas ele não funciona... eu queria saber também como fazer isso em um 'adf read only table'... assim que o usuário selecionasse uma linha .. eu queria que já executasse uma ação... mas na propriedade 'onclick' dele não está executando a ação....
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

de forma alguma você encomoda
seria bom separar os assuntos por topicos para manter as regras do forum

vamos la...
você precisa mecher em 2 atributos do seu componente
1 - autoSubmit = "true"
2 - valueChangeListener="#{nomeDoBean.nomeDoMetodo}"

no caso você deve definir a sua ação dentro do método que você chamará da forma acima

outra coisa...
tudo q tiver 'on' na frente é JS ou seja, pode implementar script ali ou chamar função do seu arquivo JS.. so funciona JS nesses atributos tendeu
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

ok então...

vou abrir um outro tópico pra falar sobre esse assunto....
porque não deu certo...
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

Então Victor... eu acho que não vou adotar o LOV .. pelo menos não nessa situação.... porque eu só preciso mesmo que o usuário click em OK ou cancelar.... daquela forma que você me passou em js...

Daí você havia me dito o seguinte:

"criar um outro componente afh:script e ao invés de apontar para um arquivo colocar a função la e dai atraves de um binding executar esse cara"

Colocar a função lá.. você diz no lugar do source?...
e como é que eu vou executar a função pelo binding... no bean?....
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

no source da pra colocar codigo JS

acho q não da pra executar ele apartir do bean não...
e q eu nunca fiz isso q você ta querendo entende

tenta atraves do codigo fonte da sua pagina q foi gerado pelo jsp.. tenta achar esse componente q você quer implementar a funcionalidade... de um id la na sua table e com o ctrl+f você acha e veja o que o componente adf vira em html

ate agora eu não entendi a situação que você precisa de um dialog que o q te passei não resolve.... :roll:
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

Bom.. dexa eu te explica...

Eu preciso somente que o usuário clicke em 'sim' ou 'não' :wink: .... só que eu não posso colocar daquela mesma forma que você me passo da primeira vez.. de colocar na propriedade 'onclick' do botão... porque não é sempre que eu vou mostrar essa mensagem... eu só vo mostrar a mensagem .. quando a function sql que eu chamei me retornar um determinado valor..
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

isso não e facil de fazer não o michele
vai ter de fazer algumas gambiarras e nem sei como te explicar muito bem pois fiz coisa parecida mas não igual

teria como você atulizar um hidden com o valor do select e no teu codigo JS da um getElementById() e la no teu js você decide se vai ou não exibir a dialog

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

vê o que você tira daqui oh
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

Mick escreveu:Bom.. dexa eu te explica...

Eu preciso somente que o usuário clicke em 'sim' ou 'não' :wink: .... só que eu não posso colocar daquela mesma forma que você me passo da primeira vez.. de colocar na propriedade 'onclick' do botão... porque não é sempre que eu vou mostrar essa mensagem... eu só vo mostrar a mensagem .. quando a function sql que eu chamei me retornar um determinado valor..
vamo resolver seu problema...

1- implemente uma jsp com btn sim e não
2- crie uma naveção da sua jsp ára esta jspDialog
3- No metodo que você chamara no atributo action do seu botao que vai estar na jsp, você deve ir no AM fazer seu select e retornar o valor da query e dai você decidi no metodo do bean o que vai retornar se a navegação para a jspDialog ou null para não fazer nada

obs.: os botões sim e não vao chamar metodos que você pode implementar no mesmo bean que você ta usando
acho q vai ser bem simples hein...
good luck
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 é o seguinte....

eu usei o mesmo backing bean para as duas jsp... assim se uma delas alterasse algum valor eu poderia verificar depois ... então eu criei uma veriável boolean private... e quando na página dialog eu clicava no botão.. setava esse valor pra true.... (inicialmente esse valor era false) e quando eu voltei pra primeira página e verifiquei esse valor... ele estava como false... como se nenhum método tivesse alterado o valor dele... eu tentei também fazer isso em uma class a parte... mas não deu certo.. eu acho que vou mesmo ter de usar o returnListener... mas pelo menos minha primeiras tentativas foram frustradas!!....

Sabe o que eu tava pensando em fazer... usar um dialog swing... mas daí eu não sei o que tava acontecendo com o meu frame..,. q toda vez que eu chamava ele.. ele ficava pequenininho no canto da página... muitas vezes eu nem vi que ele tinha aparecido...
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

tenta delcarar a sua variavel boolean como static

Selecionar tudo

private static boolean nomeVariavel;
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

Ah... desse jeito deu certo sim!!...

agora só um detealhe .. como eu faço pra chamar uma página jsp, de dentro do bean?..
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

q bom
como assim chamar jsp do bean ??? redirecionamento ??

v c não está usando as navegações do JSF ??
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

sim.. eu estou usando as navegações do jsf...

no meu faces-config.xml, eu liguei as duas páginas.....

mas se no atributo action do meu botão ... eu chamo o backing bean... não tem como eu colocar lá também a chamada da outra página...

e também.. eu vo precisar fazer essa chamada de dentro do bean,,, porque eu preciso fazer verificações antes de chama-lo... se não cairia na mesma de chamar diretamente o código js...
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

esse redirecionamento se da da seuinte form...

do action da sua jsp você chama um metodo Bean dai la você vai decidir se você vai passar ou não a navegação... ou então você vai decidir qual navegação enviar

qual o problema de você passar ou não uma navegação.. ou escolher uma navegação para passar ?
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

Eu acho que o problema é esse...

como eu faço pra passar a navegação?
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

o metodo que você chama apartir do action do seu botão deve receber uma String ou seja o metodo que é chamado la no bean retorna uma String..
e so você retornar a navegação que você definiu la no seu face-config

Selecionar tudo

     if (condição123)
          return "irParaJSP123";
     if (condição456)
          return "irParaJSP456";
     else
          return "irParaJSP789";
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... sim agora entendi....

agora deu tudo certinho....!! :D

Agora a respeito disso.. só uma último pergunta... :roll: tem como fazer com que esse dialog apareça no centro da tela?....
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

tem sim....

você pode pegar isso pronto já e algum site por ai....

é um código JS que captura a resolução de tela do cliente e calcula o meio da tela e então posiciona a jsp


já me foi pedido para implementar isso porem quanto orcei as horas eles falaram que poderia ficar assim mesmo
é muito trabalho para pouca funcionalidade... mas como disse tem isso pronto por ai eso dar uma boa googada
:)
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

oh o que te falei
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 todas as dicas e pela paciência :P
já consegui resolver meu problema!!
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

q bom
qualquer coisa tamo ai
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

óh eu d novo aqui!!...

Victor.. a solução que eu tinha dado não foi uma boa solução... voltei a tentar essa mesma solução ..de chamar um dialog.. e estou d novo com o problema de centralizar a tela de mensagem... eu estou tentando colocar no atributo 'onload' do afh:body, dessa página .jsp que está sendo aberta como diálogo, uma function javascript:

Selecionar tudo

function Centraliza() {

    posx = (screen.width/2)-(400/2);  
    posy = (screen.height/2)-(200/2);  
    window.resizeTo(400,200);
    window.moveTo(posx,posy);
} 


mas não sei se estou fazendo alguma coisa errada porque ele não está centralizando... quando eu do um run a partir do jdeveloper direto na página dialog ela abre no centro bunitinho... mas quando eu chamo apartir de uma outra página ele continua aparecenco no canto superior esquerdo.

Na verdade o que estou tentando fazer é executar um código javascript assim que a página jsp é aberta... não sei também se estou colocando no lugar certo..
não sei também se você conseguiu entender!!.. hehe
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

mesmo você falando pra mim que funciona quando chama a jsp dialog sozinha eu te digo q não faz sentido pois você so esta declarando uma função
e não a chama em lugar nenhum

bom..
não precisa ter phd para deduzir que quando a dialog e aberta por um redirecionamento, o codigo js do onload não esta sendo executado
1- afim de ter certeza disso coloque um alert no seu js

se o problema for esse mesmo
sugiro fazer o seguinte...

Selecionar tudo

<afh:script source="arquivoContendoFuncaoCentralizar.js"/>
<afh:body onload="javascript:Centralizar()">
boa sorte
qualquer coisa estamos ai
fica na paz
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 eu fiz isso sim!!... chamei essa função no onload do body.. exatamente desse jeito... e já coloquei também um alert pra ver se estava funcionado... ele aparece o alert.. mas não reposiciona a janela!!... :(

eu não acredito que algo tão simples, que é mostrar um popup, e comum seja tão complicado assim de se implemanta em jsp!!...
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

já tentou altera os valores de X e Y

não sei o que pode estar acontecendo :oops:
Responder
  • Informação
  • Quem está online

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