Saudações!
Gostaria de saber como adicionar um objeto em uma lista através de um Managed Bean? Mas considere que não quero definir a lista no Managed Bean.
Considerem as seguintes classes:
package model;
public class Coisa {
private String a;
private String b;;
public String getA() {
return a;
}
public void setA(String a) {
this.a = a;
}
public String getB() {
return b;
}
public void setB(String b) {
this.b = b;
}
public Coisa(String a, String b) {
this.a = a;
this.b = b;
}
public Coisa() {
}
}
Classe Monte que contém uma lista de objetos Coisa. É aqui que quero adicionar os objetos
[code]
package model;
import java.util.ArrayList;
import java.util.List;
public class Monte {
private List coisas = new ArrayList();
public List<Coisa> getCoisas() {
return coisas;
}
public void setCoisas(Coisa umaCoisa) {
this.coisas.add(umaCoisa);
}
public Monte(){
// dessa forma consigo adicionar:
// this.coisas.add(new Coisa("AAA", "BBB"));
}
}
}[/code]
Managed Bean ControlaMonte:
package control;
import model.Coisa;
import model.Monte;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
@ManagedBean(name = "controla")
@SessionScoped
public class ControlaMonte {
private Coisa coisa;
private Monte monte;
public Coisa getCoisa() {
return coisa;
}
public void setCoisa(Coisa coisa) {
this.coisa = coisa;
}
public Monte getMonte() {
return monte;
}
public void setMonte(Monte monte) {
this.monte = monte;
}
public ControlaMonte() {
this.coisa = new Coisa();
this.monte = new Monte();
}
}
Formulário - index.html
...
<body>
<h:outputText value="Insere coisas"/>
<p>
<h:form>
<h:inputText value="#{controla.coisa.a}"/>
<h:inputText value="#{controla.coisa.b}"/>
<h:commandButton value="Mostra" action="mostra"/>
</h:form>
</body>
...
Listagem - mostra.jsp
...
<body>
<h:outputText value="Lista um monte de coisas"/>
<h:form>
<h:dataTable value="#{controla.monte.coisas}" var="coisas">
<h:column>
<h:outputText value="#{coisas.a}, "/>
</h:column>
<h:column>
<h:outputText value="#{coisas.b}"/>
</h:column>
</h:dataTable>
</h:form>
</body>
...
Já tentei criar alguns métodos na classe ControlaMonte com o objetivo de adicionar na lista da classe Monte. Entre várias idéias, fiz algo do tipo:
...
public void adicionar(){
this.monte.add(this.coisa);
}
...
Já vi vários exemplos que adionam objetos na lista que encontra-se em um MangedBean, mas não é assim que desejo.
Grato pela atenção.
Willian