P
Phoe
Gast
Hallo zusammen,
ich zerbreche mir seit 2 Tagen den Kopf (vermutlich) über eine absolute Banalität.
Ich habe eine ArrayList "apartment" in der Klasse "ApartmentList" mit 4 Werten gefüllt und möchte
nun per Formular weitere Werte hinzufügen. Die Liste wird zwar weiter gefüllt (zumindest laut #{apartmentList.apartment.size()} ), allerdings offenbar mit Nullwerten. Gebe ich die Liste per <h:dataTable> aus, werden nur die 4 vorab eingefügten Werte angezeigt, nicht jedoch die aus dem Formular stammenden.
Zur Verdeutlichung hier der Code:
apartment.java:
ApartmentList.java:
addApartment.xhtml (Formular + commandButton mit Methodenaufruf):
[XML]<h:form headerClass="apartment">
<h
anelGrid columns="2" border="1">
<h
utputLabel for="#{msgs.apartment_name}" value="#{msgs.apartment_name}:" />
<h:inputText value="#{apartments.apartment_name}" id="apartment_name" required="true" immediate="true" />
<h
utputLabel for="#{msgs.location}" value="#{msgs.location}:" />
<h:inputText value="#{apartments.location}" id="location" required="true" immediate="true" />
<h
utputLabel for="#{msgs.square_meter}" value="#{msgs.square_meter}:" />
<h:inputText value="#{apartments.square_meter}" id="square_meter" required="true" immediate="true" />
<h
utputLabel for="#{msgs.price}" value="#{msgs.price}:" />
<h:inputText value="#{apartments.price}" id="price" required="true" immediate="true" />
<h
utputLabel for="#{msgs.garden}" value="#{msgs.garden}:" />
<h:selectBooleanCheckbox value="#{apartments.garden}" immediate="true" id="garden" required="true" />
<h
utputLabel for="#{msgs.balcony}" value="#{msgs.balcony}:" />
<h:selectBooleanCheckbox value="#{apartments.balcony}" immediate="true" id="balcony" required="true" />
<h
utputLabel for="#{msgs.text}" value="#{msgs.text}:" />
<h:inputTextarea value="#{apartments.text}" id="text" immediate="true" />
<h:inputHidden value="#{apartments.addDate}">
<f:convertDateTime pattern="dd.MM.yyyy HH:mm:ss"/>
</h:inputHidden>
</h
anelGrid>
<h:commandButton value="#{msgs.confirm}" action="#{apartmentList.addEntry}" />
<h:commandButton value="#{msgs.cancel}" action="cancelled.xhtml" immediate="true" />
</h:form>[/XML]
apartments.xhtml (Ausgabe der Liste "apartment"):
[XML]
<h:dataTable var="apartment" value="#{apartmentList.apartment}" border="1">
<h:column>
<f:facet name="header">
<h
utputText value="#{msgs.apartment_name}" />
</f:facet>
<h
utputText value="#{apartment.apartment_name}" />
</h:column>
<h:column>
<f:facet name="header">
<h
utputText value="#{msgs.location}" />
</f:facet>
<h
utputText value="#{apartment.location}" />
</h:column>
<h:column>
<f:facet name="header">
<h
utputText value="#{msgs.square_meter}" />
</f:facet>
<h
utputText value="#{apartment.square_meter}" />
</h:column>
<h:column>
<f:facet name="header">
<h
utputText value="#{msgs.price}" />
</f:facet>
<h
utputText value="#{apartment.price}" />
</h:column>
<h:column>
<f:facet name="header">
<h
utputText value="#{msgs.garden}" />
</f:facet>
<h
utputText value="#{apartment.garden}" />
</h:column>
<h:column>
<f:facet name="header">
<h
utputText value="#{msgs.balcony}" />
</f:facet>
<h
utputText value="#{apartment.balcony}" />
</h:column>
<h:column>
<f:facet name="header">
<h
utputText value="#{msgs.text}" />
</f:facet>
<h
utputText value="#{apartment.text}" />
</h:column>
</h:dataTable>[/XML]
Ich vermute mal, dass mir der Standard-Konstruktor in der "Apartment.java" einen Strich durch die Rechnung macht, aber ohne den kann ich das Formular in der "addAparatment.xhtml" nicht befüllen.
Schieße ich womöglich komplett am Ziel vorbei? Bin für jede Hilfe dankbar. 8)
ich zerbreche mir seit 2 Tagen den Kopf (vermutlich) über eine absolute Banalität.
Ich habe eine ArrayList "apartment" in der Klasse "ApartmentList" mit 4 Werten gefüllt und möchte
nun per Formular weitere Werte hinzufügen. Die Liste wird zwar weiter gefüllt (zumindest laut #{apartmentList.apartment.size()} ), allerdings offenbar mit Nullwerten. Gebe ich die Liste per <h:dataTable> aus, werden nur die 4 vorab eingefügten Werte angezeigt, nicht jedoch die aus dem Formular stammenden.
Zur Verdeutlichung hier der Code:
apartment.java:
Java:
package kleinanzeigen;
import java.util.Date;
import javax.faces.bean.ApplicationScoped;
import javax.faces.bean.ManagedBean;
@ManagedBean(name="apartments")
@ApplicationScoped
public class Apartments {
private String apartment_name;
private Integer square_meter;
private String location;
private Double price;
private Boolean garden;
private Boolean balcony;
private String text;
private Date addDate;
public Apartments() {
}
public Apartments(String apartment_name, Integer square_meter, String location, Double price, Boolean garden, Boolean balcony, String text) {
this.apartment_name=apartment_name;
this.square_meter=square_meter;
this.location=location;
this.price=price;
this.garden=garden;
this.balcony=balcony;
this.text=text;
}
public String getApartment_name() {
return apartment_name;
}
public void setApartment_name(String appartment_name) {
this.apartment_name = appartment_name;
}
...
ApartmentList.java:
Java:
package kleinanzeigen;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ApplicationScoped;
import javax.faces.bean.ManagedBean;
@ManagedBean(name="apartmentList")
@ApplicationScoped
public class ApartmentList {
private List<Apartments> apartment = new ArrayList<Apartments>();
public ApartmentList() {
this.apartment.add(new Apartments("3-Zimmer-Wohnung",95,"Stuttgart",(double) 950.00,false,true,"Keine Tiere"));
this.apartment.add(new Apartments("4-Zimmer-Wohnung",120,"Ludwigsburg",(double) 1150.00,true,false,"Keine Kinder"));
this.apartment.add(new Apartments("Penthouse-Wohnung",180,"Kornwestheim",(double) 1700.00,false,true,"Ohne Provision"));
this.apartment.add(new Apartments("Großer Loft",150,"Heilbronn",(double) 2500.00,false,true,"Küche kann übernommen werden"));
}
public List<Apartments> getApartment() {
return apartment;
}
public void setApartment(List<Apartments> apartment) {
this.apartment=apartment;
}
public String addEntry() {
apartment.add(new Apartments());
return "apartments.xhtml";
}
}
addApartment.xhtml (Formular + commandButton mit Methodenaufruf):
[XML]<h:form headerClass="apartment">
<h
<h
<h:inputText value="#{apartments.apartment_name}" id="apartment_name" required="true" immediate="true" />
<h
<h:inputText value="#{apartments.location}" id="location" required="true" immediate="true" />
<h
<h:inputText value="#{apartments.square_meter}" id="square_meter" required="true" immediate="true" />
<h
<h:inputText value="#{apartments.price}" id="price" required="true" immediate="true" />
<h
<h:selectBooleanCheckbox value="#{apartments.garden}" immediate="true" id="garden" required="true" />
<h
<h:selectBooleanCheckbox value="#{apartments.balcony}" immediate="true" id="balcony" required="true" />
<h
<h:inputTextarea value="#{apartments.text}" id="text" immediate="true" />
<h:inputHidden value="#{apartments.addDate}">
<f:convertDateTime pattern="dd.MM.yyyy HH:mm:ss"/>
</h:inputHidden>
</h
<h:commandButton value="#{msgs.confirm}" action="#{apartmentList.addEntry}" />
<h:commandButton value="#{msgs.cancel}" action="cancelled.xhtml" immediate="true" />
</h:form>[/XML]
apartments.xhtml (Ausgabe der Liste "apartment"):
[XML]
<h:dataTable var="apartment" value="#{apartmentList.apartment}" border="1">
<h:column>
<f:facet name="header">
<h
</f:facet>
<h
</h:column>
<h:column>
<f:facet name="header">
<h
</f:facet>
<h
</h:column>
<h:column>
<f:facet name="header">
<h
</f:facet>
<h
</h:column>
<h:column>
<f:facet name="header">
<h
</f:facet>
<h
</h:column>
<h:column>
<f:facet name="header">
<h
</f:facet>
<h
</h:column>
<h:column>
<f:facet name="header">
<h
</f:facet>
<h
</h:column>
<h:column>
<f:facet name="header">
<h
</f:facet>
<h
</h:column>
</h:dataTable>[/XML]
Ich vermute mal, dass mir der Standard-Konstruktor in der "Apartment.java" einen Strich durch die Rechnung macht, aber ohne den kann ich das Formular in der "addAparatment.xhtml" nicht befüllen.
Schieße ich womöglich komplett am Ziel vorbei? Bin für jede Hilfe dankbar. 8)