import java.util.List;
public class Aktion {
private String name;
private Double spendenZiel;
private Double spendenBetrag;
private Double bisherGespendet;
private Konto konto;
private Long id;
private List<Spende>spenden;
public Aktion(){
konto = new Konto();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Double getSpendenBetrag() {
return spendenBetrag;
}
public void setSpendenBetrag(Double spendenBetrag) {
this.spendenBetrag = spendenBetrag;
}
public Double getBisherGespendet() {
return bisherGespendet;
}
public void setBisherGespendet(Double bisherGespendet) {
this.bisherGespendet = bisherGespendet;
}
public Konto getKonto() {
return konto;
}
public void setKonto(Konto konto) {
this.konto = konto;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public List<Spende> getSpenden() {
return spenden;
}
public void setSpenden(List<Spende> spenden) {
this.spenden = spenden;
}
public Double getSpendenZiel() {
return spendenZiel;
}
public void setSpendenZiel(Double spendenZiel) {
this.spendenZiel = spendenZiel;
}
}
import java.io.Serializable;
import javax.enterprise.context.SessionScoped;
import javax.inject.Inject;
import javax.inject.Named;
@SessionScoped
@Named("AktionEditController")
public class AktionEditController implements Serializable{
private static final long serialVersionUID = 2815796004558360299L;
@Inject
private AktionListProducer aktionListProducer;
private Aktion aktion;
private Mode mode;
public void setAktionToEdit(Mode mode){
setAktionToEdit(mode, new Aktion());
}
public void setAktionToEdit(Mode mode, Aktion aktion){
this.aktion = aktion;
this.mode = mode;
}
public String doSave(){
if(getMode()==Mode.ADD){
aktionListProducer.getAktionen().add(aktion);
}
return Pages.AKTION_LIST;
}
public String doCancel(){
return Pages.AKTION_LIST;
}
public String getTitle() {
return getMode()==Mode.EDIT ? "Aktionsdaten editieren" : "Neue Aktion anlegen";
}
public AktionListProducer getAktionListProducer() {
return aktionListProducer;
}
public void setAktionListProducer(AktionListProducer aktionListProducer) {
this.aktionListProducer = aktionListProducer;
}
public Aktion getAktion() {
return aktion;
}
public void setAktion(Aktion aktion) {
this.aktion = aktion;
}
public Mode getMode() {
return mode;
}
public void setMode(Mode mode) {
this.mode = mode;
}
}
import java.io.Serializable;
import javax.enterprise.context.SessionScoped;
import javax.inject.Inject;
import javax.inject.Named;
@SessionScoped
@Named("AktionListController")
public class AktionListController implements Serializable {
private static final long serialVersionUID = 4105912509159015L;
@Inject
private AktionEditController aktionEditController;
public String doAddAktion(){
System.out.println("Add Aktion");
return Pages.AKTION_EDIT;
}
public String doEditAktion(Aktion aktion){
System.out.println("Edit Aktion"+aktion);
return Pages.SPENDE_FORM_EDIT;
}
public String doEditSpendeForm(Aktion aktion){
System.out.println("Edit Spende Form"+aktion);
return Pages.SPENDE_FORM_EDIT;
}
public String doListSpende(Aktion aktion){
System.out.println("List Spende"+aktion);
return Pages.SPENDE_LIST;
}
public void doDeleteAktion(Aktion aktion){
System.out.println("wird noch implementiert");
}
}
import java.io.Serializable;
import java.util.LinkedList;
import java.util.List;
import javax.enterprise.context.SessionScoped;
import javax.inject.Named;
@SessionScoped
@Named("AktionListProducer")
public class AktionListProducer implements Serializable {
private static final long serialVersionUID = -412412414214L;
private List<Aktion> aktionen;
public List<Aktion>getAktionen(){
return aktionen;
}
public AktionListProducer(){
aktionen = createMockAktionen();
}
public List<Aktion> createMockAktionen(){
Spende spende1 = new Spende();
spende1.setSpenderName("blaba");
spende1.setBetrag(2122d);
spende1.setQuittung(true);
spende1.setStatus(Status.UEBERWIESEN);
spende1.setKonto(new Konto(spende1.getSpenderName(),"xxx bank", "1313", "21414"));
List <Spende>spenden = new LinkedList<Spende>();
spenden.add(spende1);
Aktion aktion1 = new Aktion();
aktion1.setName("bla");
aktion1.setSpendenZiel(1000d);
aktion1.setBisherGespendet(200d);
aktion1.setSpendenBetrag(20d);
aktion1.setId(1L);
aktion1.setKonto(new Konto("Max Musterman","ABC", "213123","123123"));
aktion1.setSpenden(spenden);
List<Aktion>ret =new LinkedList<Aktion>();
ret.add(aktion1);
return ret;
}
}
public class Konto {
private String name;
private String nameDerBank;
private String kontoNr;
private String blz;
public String getName() {
return name;
}
public Konto() {
this(null, null, null, null);
}
public Konto(String name, String nameDerBank, String kontoNr, String blz) {
this.name = name;
this.nameDerBank = nameDerBank;
this.kontoNr = kontoNr;
this.blz = blz;
}
public void setName(String name) {
this.name = name;
}
public String getNameDerBank() {
return nameDerBank;
}
public void setNameDerBank(String nameDerBank) {
this.nameDerBank = nameDerBank;
}
public String getKontoNr() {
return kontoNr;
}
public void setKontoNr(String kontoNr) {
this.kontoNr = kontoNr;
}
public String getBlz() {
return blz;
}
public void setBlz(String blz) {
this.blz = blz;
}
}
public enum Mode {
EDIT, ADD
}
public class Pages {
public static final String AKTION_LIST="aktionList";
public static final String AKTION_EDIT="aktionEdit";
public static final String SPENDE_FORM_EDIT="spendeFormEdit";
public static final String SPENDE_LIST="spendeList";
public static final String GELD_SPENDEN="geldSpenden";
}
public class Spende {
private Double betrag;
private String spenderName;
private Boolean quittung;
private Status status;
private Konto konto;
public Spende() {
this.konto = new Konto();
}
public Double getBetrag() {
return betrag;
}
public void setBetrag(Double betrag) {
this.betrag = betrag;
}
public String getSpenderName() {
return spenderName;
}
public void setSpenderName(String spenderName) {
this.spenderName = spenderName;
}
public Boolean getQuittung() {
return quittung;
}
public void setQuittung(Boolean quittung) {
this.quittung = quittung;
}
public Status getStatus() {
return status;
}
public void setStatus(Status status) {
this.status = status;
}
public Konto getKonto() {
return konto;
}
public void setKonto(Konto konto) {
this.konto = konto;
}
}
public enum Status {
UEBERWIESEN, IN_BEARBEITUNG;
}```
```<?xml version="1.0" encoding="UTF-8"?>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
template="/WEB-INF/templates/default.xhtml">
<ui:define name="content">
<h1>
<h:outputText value="#{aktionEditController.title}" />
</h1>
<h:form acceptcharset="ISO-8859-1">
<h:panelGrid columns="3">
<f:facet name="header">Allgemein</f:facet>
<h:outputLabel value="Name:" ></h:outputLabel>
<h:inputText id="a_name" value="#{aktionEditController.aktion.name}"
validatorMessage="Der Name einer Aktion mu min. 4 und darf max. 30 Zeichen lang sein">
<f:validateRequired />
<f:validateLength minimum="4" maximum="30" />
</h:inputText>
<h:message for="a_name" style="color: red;" />
<h:outputLabel value="SpendenZiel:" ></h:outputLabel>
<h:panelGroup>
<h:inputText id="a_spendenziel"
value="#{aktionEditController.aktion.spendenZiel}"
validatorMessage="Das Spendenziel für die Aktion muss min. 10 Euro sein">
<f:convertNumber maxFractionDigits="2" minFractionDigits="2" />
<f:validateRequired />
<f:validateDoubleRange minimum="10.0" />
</h:inputText>EUR
</h:panelGroup>
<h:message for="a_spendenziel" style="color: red;" />
<h:outputLabel value="Spendenbetrag" ></h:outputLabel>
<h:panelGroup>
<h:inputText id="a_spendenbetrag"
value="#{aktionEditController.aktion.spendenBetrag}"
validatorMessage="Der Spendenbetrag muss min 1 Euro sein">
<f:validateRequired />
<f:validateDoubleRange minimum="1.0" />
</h:inputText>EUR
</h:panelGroup>
<h:message for="a_spendenbetrag" style="color:red;" />
</h:panelGrid>
<h:panelGrid columns="3">
<f:facet name="header">Bankverbindung</f:facet>
<h:outputLabel value="Name:"></h:outputLabel>
<h:inputText id="b_name"
value="#{aktionEditController.aktion.konto.name}">
<f:validateRequired />
</h:inputText>
<h:message for="b_name" style="color:red;" />
<h:outputLabel value="Konto-Nr.:"></h:outputLabel>
<h:inputText id="b_konto"
value="#{aktionEditController.aktion.konto.kontoNr}">
<f:validateRequired />
</h:inputText>
<h:message for="b_konto" style="color:red;" />
<h:outputLabel value="BLZ:" />
<h:inputText id="b_blz"
value="#{aktionEditController.aktion.konto.blz}">
<f:validateRequired />
</h:inputText>
<h:message for="b_blz" style="color:red;" />
<h:outputLabel value="Name der bank" />
<h:inputText id="b_name_bank"
value="#{aktionEditController.aktion.konto.nameDerBank}">
<f:validateRequired />
</h:inputText>
<h:message for="b_name_bank" style="color:red;" />
</h:panelGrid>
<h:commandButton action="#{aktionEditController.doSave()}"
value="Speichern" />
<h:commandButton action="#{aktionEditController.doCancel()}"
value="Abbrechen" immediate="true" />
</h:form>
</ui:define>
</ui:composition>```
```<?xml version="1.0" encoding="UTF-8"?>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
template="/WEB-INF/templates/default.xhtml">
<ui:define name="content">
<h1>Meine Aktionen</h1>
<h:form acceptcharset="ISO-8859-1">
<h:dataTable value="#{aktionListProducer.aktionen}" var="aktion">
<h:column>
<h:commandLink value="x"
aktionListener="#{aktionListController.doDeleteAktion(aktion)}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="name" />
</f:facet>
<h:outputText value="#{aktion.name}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Spendenziel" />
</f:facet>
<h:outputText value="#{aktion.spendenZiel}">
<f:convertNumber type="currency" currencyCode="EUR" />
</h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="bisher gespendet" />
</f:facet>
<h:outputText value="#{aktion.bisherGespendet}" >
<f:convertNumber type="currency" currencyCode="EUR" />
</h:outputText>
</h:column>
<h:column>
<h:commandLink
action="#{aktionListController.doEditAktion(aktion)}" value="Editiieren" />
</h:column>
<h:column>
<h:commandLink action="#{aktionListController.doListSpende(aktion)}"
value="Spendenliste" />
</h:column>
<h:column>
<h:commandLink action="#{aktionListController.doEditSpendeForm(aktion)}"
value="Formular" />
</h:column>
</h:dataTable>
<h:commandButton action="#{aktionListController.doAddAktion()}"
value="Aktion hinzufügen" />
</h:form>
</ui:define>
</ui:composition>
<ui:composition xlmns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
template="WEB-INF/templates/default.xhtml">
<ui:define name="content">
Willkommen zu unserem Workshop!
</ui:define>
</ui:composition>```
Ist aus dem Buch "Workshop Java EE7 " Marcus Schießer.
```ERROR MESSAGE:
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: /aktionEdit.xhtml @17,92 value="#{aktionEditController.aktion.name}": Target Unreachable, identifier 'aktionEditController' resolved to null
javax.faces.webapp.FacesServlet.service(FacesServlet.java:606)
org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:62)
root cause
javax.el.PropertyNotFoundException: /aktionEdit.xhtml @17,92 value="#{aktionEditController.aktion.name}": Target Unreachable, identifier 'aktionEditController' resolved to null
com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:100)
com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:95)
javax.faces.component.UIInput.getConvertedValue(UIInput.java:1030)
javax.faces.component.UIInput.validate(UIInput.java:960)
javax.faces.component.UIInput.executeValidate(UIInput.java:1233)
javax.faces.component.UIInput.processValidators(UIInput.java:698)
javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214)
javax.faces.component.UIForm.processValidators(UIForm.java:253)
javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214)
javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214)
javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1172)
com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:62)
note The full stack trace of the root cause is available in the JBoss Web/7.0.13.Final logs.
JBoss Web/7.0.13.Final```
Wie könnt ihr mir helfen?
Wenn jemand einen Fehler findet, teils mir mit.
Ansonsten deployt das auch mal und sagt mir ob ihr die selbe Fehler meldung kriegt.
Ich habs direkt aus dem Buch, wolls eigentlich nur mal komplett runter coden -.-
mfg