JavaBeans Comunicação [Resolvido]

Olá a todos, gostaria de saber se existe alguma maneira de fazer comunicação entre os javabeans, por exemplo

temos o javaBeans X e Y

la no browser eu clico em um botão que chama algum metodo do javabeans X , exemplo X.enviaDados

blz la no X.enviaDados eu seto todas variáveis ali de X ,

eu gostaria de saber se tem como o X mandar dados para o Y

grato

Cara, criar um objeto de Y e envia tudo pra ele, como se você tivesse enviando igual o X normalmente…

Acho que é isso que você quer.

entao victor, o problema é o seguinte, eu não vou apenas ter X e Y vou ter vários … e e nem todos vão mandar para Y é como se X fosse uma entrada para Y e Y uma entrada para outro objeto , como se fosse um automato

Não sei se entendí muito bem, mas acho que você está procurando por algo como JMX. Dê uma olhada a respeito no Google e diga pra gente, OK?

[]´s

[quote=asaudate]Não sei se entendí muito bem, mas acho que você está procurando por algo como JMX. Dê uma olhada a respeito no Google e diga pra gente, OK?

[]´s[/quote]

cara não é tão avançado assim, seria algo como:

vamos supor que o javabeans X a entrada dele seja 2 valores inteiros, quando ele recebe esses dois valores ele coloca isso em banco, oque o javabeans Y faz, ele tem que pegar essas valores do banco e soma-los e a saida de Y seria a soma dos elementos que ele tb colocaria em banco,

Problemas, como Y vai saber que ouve uma saida de X , pois na minha pagina JSP tem dois campos um do X e um do Y

nao posso fazer todos eles numa classe pois … a saida de Y pode ser uma entra para um Objeto Z e assim vai … minha classe ficaria enorme

Não estou conseguindo ver uma vantagem de criar essa situação, pelo o que eu entendi é o seguinte:

Ver o que você entende por isso aí…


class X {
   
    public void inserirValores(int x, int y) {
              retornarSoma(x,y);
       //codigo aqui para inserir no banco
     }

    public int retornarSoma(int x, int y) {
     int soma = x + y; 
     return soma;
   }
}

Ver se isso aí não resolveria, ou eu entendi tudo errado…

[quote=victorhsn]Não estou conseguindo ver uma vantagem de criar essa situação, pelo o que eu entendi é o seguinte:

Ver o que você entende por isso aí…


class X {
   
    public void inserirValores(int x, int y) {
              retornarSoma(x,y);
       //codigo aqui para inserir no banco
     }

    public int retornarSoma(int x, int y) {
     int soma = x + y; 
     return soma;
   }
}

Ver se isso aí não resolveria, ou eu entendi tudo errado… [/quote]

vou tentar ser mais claro :smiley:

Assim vamos supor que o o cara que vai operar a minha pagina ele tem eventos que são entradas para alguma atividade e a saida dessa atividade e entrada para outro evento,

vamos supor que no evento X eu coloco os dois valores, então a saída desse evento é esses dois valores, e esses dois valores são entrada para uma atividade, essa atividade ela vai fazer uma soma ( claro, apenas como um exemplo, essa atividade pode fazer verificações para ver o que fazer com esse dado), ao fazer a ação essa atividade vai gerar uma saída que é uma entrada para um evento Y( no exemplo que eu falei, o evento Y apena mostra um resultado, mas ele poderia tem mais alguma inserção de dados )

alguém ?

Victor, você pode tentar o seguinte:

No faces-config.xml

 <managed-bean>
  <managed-bean-name>Y</managed-bean-name>
  <managed-bean-class>com.teste.web.Y</managed-bean-class>
  <managed-bean-scope>session</managed-bean-scope>
  <managed-property>
   <property-name>X</property-name>
   <value>#{X}</value>
  </managed-property>
 </managed-bean>

Assim você está declarando o bean Y e dizendo que ele usará informações do bean X. Em seguida, em Y:

public class Y {

	private X beanX;

Você cria uma variável do tipo X. Se o X tiver scope session, ele terá as informações que você deu set em sua página.

Agora é só dar set nos dados de X na página e chamar o método de Y no action.

Em Y pode haver, por exemplo:

public int getSoma(){
  int soma = 0;
  soma = beanX.getValorUm() + beanX.getValorDois();
  return soma;
}

Espero que seja essa a sua dúvida, qualquer coisa só perguntar.


Lucas.

lpalma

Cara acho que você resolveu meu problema, vamos ver se eu entendi

<managed-property>
   <property-name>X</property-name>
   <value>#{X}</value>
  </managed-property>

aqui em X estou falando que Y vai ter um tipo X e o valor dele vai ser a referencia do objeto X

Isso, abaixo do managed-bean você pode colocar managed-property falando quais os beans que aquele managed-bean vai usar.

Você pode colocar quantos quiser, vou te mostrar um código meu que funciona e faz isso, no faces-config:

 <managed-bean>
  <managed-bean-name>capturaAction</managed-bean-name>
  <managed-bean-class>com.teste.web.CapturaAction</managed-bean-class>
  <managed-bean-scope>session</managed-bean-scope>
  <managed-property>
   <property-name>capturaBean</property-name>
   <value>#{capturaBean}</value>
  </managed-property>
  <managed-property>
   <property-name>propostaBean</property-name>
   <value>#{propostaBean}</value>
  </managed-property>
 </managed-bean>
 <managed-bean>
  <managed-bean-name>capturaBean</managed-bean-name>
  <managed-bean-class>com.teste.web.CapturaBean</managed-bean-class>
  <managed-bean-scope>session</managed-bean-scope>
 </managed-bean>
<managed-bean>
  <managed-bean-name>propostaBean</managed-bean-name>
  <managed-bean-class>com.teste.web.PropostaBean</managed-bean-class>
  <managed-bean-scope>session</managed-bean-scope>
 </managed-bean>

Nesse código eu crio capturaAction e digo que ele pode usar dados de capturaBean e propostaBean.

[quote=lpalma]Isso, abaixo do managed-bean você pode colocar managed-property falando quais os beans que aquele managed-bean vai usar.

Você pode colocar quantos quiser, vou te mostrar um código meu que funciona e faz isso, no faces-config:

 <managed-bean>
  <managed-bean-name>capturaAction</managed-bean-name>
  <managed-bean-class>com.teste.web.CapturaAction</managed-bean-class>
  <managed-bean-scope>session</managed-bean-scope>
  <managed-property>
   <property-name>capturaBean</property-name>
   <value>#{capturaBean}</value>
  </managed-property>
  <managed-property>
   <property-name>propostaBean</property-name>
   <value>#{propostaBean}</value>
  </managed-property>
 </managed-bean>
 <managed-bean>
  <managed-bean-name>capturaBean</managed-bean-name>
  <managed-bean-class>com.teste.web.CapturaBean</managed-bean-class>
  <managed-bean-scope>session</managed-bean-scope>
 </managed-bean>
<managed-bean>
  <managed-bean-name>propostaBean</managed-bean-name>
  <managed-bean-class>com.teste.web.PropostaBean</managed-bean-class>
  <managed-bean-scope>session</managed-bean-scope>
 </managed-bean>

Nesse código eu crio capturaAction e digo que ele pode usar dados de capturaBean e propostaBean.[/quote]

Cara muito obrigado mesmo, era isso mesmo que eu precisava, eu já desconfiava que eu poderia usar o faces-config pois ali tem a referencia de todos os objetos,

vlw