Jsf

Olá pessoal,
eu estou com uma dúvida aqui
eu tenho duas classes:

public class AnaliseController {

private Analise analise;

private DataModel model;

//Retorna a String de navegação.
public String novaAnalise() {...}

public Analise getAnalise() {...}

public void setAnalise(Analise analise) {...}

...

public String create() {...}
...

}

e tenho uma outra classe:

public class ExtratoSecoController{

private ExtratoSeco extSec;
//Retorna a String de navegação
public String novaAnalise() {
...
return "novo_extrato_seco";
}

public ExtratoSeco getExtSec() {...}

public void setExtSec(ExtratoSeco extSec) {...}

//Retorna o resultado da análise
//Convertendo um double em uma String.
public String calculaExtratoSeco(){...}

}

O problema é que eu tenho um link extrato_seco.jsf
quando eu clicar nesse link eu vou ter a String
de navegação chamada de “novo_extrato_seco”

o problema é que eu quero é executar um create
do Extrato Seco, eu estava pensando
em fazer o seguinte:

public class ExtratoSecoController extends AnaliseController{...}

isso é correto?

[]'s.

Olá pessoal será que alguém pode me dar uma ajuda?
[]'s.

Olá,

Não sei se entendi bem a sua questão, imagino que seja o seguinte (me corrija se estiver errado): você está pensando em fazer com que ExtratoSecoController seja filha de AnaliseController para poder aproveitar o método create().

Bom… Por um lado você pensou certo, reaproveitar o método ao invés de copiá-lo inteirinho para a outra classe. Mas essa não é a forma correta de fazer neste caso, vejamos porque:

A herança não deve ser usada simplesmente para reaproveitamento de código. Ela significa um relacionamento “É UM”. Por exemplo, Cachorro extends Animal está correto porque um cachorro É UM animal. Mas se eu fizer Cachorro extends Cavalo apenas para poder reaproveitar os métodos andar() e correr() está errado porque um cachorro NÃO É UM cavalo.
Vai funcionar, mas é conceitualmente errado e é um mau-uso da Orientação a Objeto.

Nesse caso o correto é transferir a lógica para uma outra classe, que seja utilizável pelas duas primeiras. Assim:

class AnaliseController {
  public String create() {
    Creator c = new Creator();
    return c.create();
  }
}
class ExtratoSecoController {
  public String create() {
    Creator c = new Creator();
    return c.create();
  }
}
class Creator {
  public String create() {
     // Aqui vai o codigo de verdade....
  }
}

Aí você pode fazer alguns ajustes necessários para que tudo funcione direitinho. Por exemplo, se precisar acessar o FacesContext a classe pode virar um managed-bean, e assim por diante.