tenho um selectOneMenu que pode ter o valor em diferentes atributos na managed-bean.
Não sei como devo proceder, procurei na internet e não encontrei nada a respeito (talvez não procurei da forma correta).
Vou mostrar um exemplo para que fique mais facil:
Na view:
<h:selectOneMenuvalue="(aqui poder ser o "campoDesejado"daclasseAoudaclasseB)"><f:selectItemitemValue="0"itemLabel="Qualquer descrição"/><f:selectItemitemValue="1"itemLabel="Qualquer descrição"/><f:selectItemitemValue="2"itemLabel="Qualquer descrição"/></h:selectOneMenu>
No ManagedBean:
...
private Classe A;
private Classe B;
//getters and setters omitidos
...
Nas classes:
...
private campoDesejado; //Campo desejado comum nas duas classes
//getters and setters omitidos
...
Antes de tentarmos resolver isso. Como o aplicativo definiria qual classe ou atributo escolher ? Acredito que essa abordagem precisa ser revista do ponto de vista de lógica.
R
redthi
Certo,
o valor do selectOneMenu determina qual classe irei utilizar para armazenar os valores.
Na verdade tenho mais campos abaixo do selectOneMenu, e conforme for o valor do selectOneMenu eu vou escolher a classe, sendo que muitas classes tem atributos iguais. (Pensei em fazer herança com os atributos iguais, mas no meu caso não posso)
D
dwduncan
Olha, porque vc não cria um único método dentro do seu manegedbean para controlar isso, ele repassa e recebe um object de seu selectOneMene. Lembre, evite criar código para execução do seu modelo dentro do seu view. Esse método resolve qual classe-instância repassar. Se essas classes tiverem corretamente sobreescrito toString() irá funcionar corretamente.
R
redthi
dwduncan,
teria como me dar um micro exemplo pratico disso?? (Seria tipo uma classe generica?)
Eu pensei em criar um metodo para controlar isso, só que não sei por onde começar.
Isso seria um exemplo no estilo "tiro no escuro", e, confesso que essa abordagem não é nada boa, porém, se é o vc quer, cuidado, pois é uma gambiarra isso aí !!! :)
A
altitdb
dwduncan,
estou envolvido no mesmo problema do redthi.
Como você mesmo disse isso é uma gambiarra.
Na sua opnião, o que eu deveria fazer, fazer assim ou criar diversos “containers” e adicionar os campos e vincular eles a classe e renderizar o “container” desejado?
xD~~
D
dwduncan
Olha, eu não sei com está o projeto de vcs. Existe o principio da coesão do objeto, ou seja, cada objeto é único e nele existem todos os métodos que são exclusivos a ele, é mais que isso, mas basicamente falando é isso. Por isso, fica confuso vc ter um objeto que possa assumir diversos valores, distintos até na classe. Dessa forma vc deveria ter um select, input, etc para cada objeto que vc deseja ajustar. Agora, se é apenas selecionar objetos instanciados da mesma classe, a conversa é outra.