# Post Daten Abfangen



## TheBigNeo (10. Mai 2011)

Hallo zusammen
Ich hoffe ich Poste das nicht am falschen Ort.

Kurzfassung:
Wie kann ich Post Daten mit Java abfangen und verarbeiten.


Etwas ausführlicher:

Ich habe folgendes Problem: (aber zuerst Erklärung)
Glassfish Server
Java und xhtml Files

Ich geh auf meine xhtml File (newBook.xhmtl) da habe ich input Boxen in die ich irgend was rein schreibe
dann Button erstellen, das erstellt mir in der DB einen neuen Eintrag.

Nun komme ich auf listBooks.xhtml da sehe ich alle Einträge in der DB.
Neben jedem Eintrag hat es eine Checkbox, die ist zum Löschen der Einträge gedacht.
Das Löschen erfolgt über die ID.

Wenn ich im Code fest codiert die ID die isch löschen will rein schreibe dann klappt das.


Jetzt zu meinem Problem:
Wenn ich die Checkboxen auswähle und dann auf Löschen klicke, werden die ID der Ausgewählten Einträge mit Post (aus irgend einem Grund) übergeben (habe ich mit FF HttP Fox herausgefunden das die Werte wirklich übergeben werden).

Ich möchte jetzt aber erreichen das wenn ich auf Löschen drücke diese Post Werte irgend wie in einer Liste oder Array gespeichert werden das ich diese anschliessend löschen kann.

Vielen Dank für eure Hilfe im Vorras.

Gruss
TheBigNeo

listBooks.xhtml Checkbox + Button Code:

[Java] 	<h:dataTable value="#{bookController.bookList}" var="bk">
			<h:column>
				<f:facet name="header">
					<hutputText value="Loeschen" />
				</f:facet>
				<input type="checkbox" name="Buch" value="#{bk.ID}" /> #{bk.ID}
			</h:column>


<h:commandButton name="Delete" value="Delete"
			action="#{bookController.doDeleteBook}" />
	</h:form>
[/code]

bookController Lösch Code:


```
// Delete a Book
  public String doDeleteBook() {
    log.debug("####called");
     Long ID = 306L;

    bookEJB.deleteBook(ID);
    bookList = bookEJB.findBooks();
    log.debug("####complete");
    return "listBooks.xhtml";
  }
```


----------



## GuPhisch (10. Mai 2011)

Hi,

Du müsstest so auf die Daten im Request zugreifen können:

```
Map<String, Object> requestMap = FacesContext.getCurrentInstance().getExternalContext().getRequestMap();
```

Musst Dir dann nur die richtigen aus der Map rausholen.


----------



## maki (10. Mai 2011)

Du nutzt JSF, da solltest du keinen Notwendigkeit haben selber mit den Postdaten zu hantieren, ManagedBeans und so...



> Jetzt zu meinem Problem:
> Wenn ich die Checkboxen auswähle und dann auf Löschen klicke, werden die ID der Ausgewählten Einträge mit Post (aus irgend einem Grund) übergeben (habe ich mit FF HttP Fox herausgefunden das die Werte wirklich übergeben werden).
> 
> Ich möchte jetzt aber erreichen das wenn ich auf Löschen drücke diese Post Werte irgend wie in einer Liste oder Array gespeichert werden das ich diese anschliessend löschen kann.


Ja, ist richtig so.
Nicht-ausgewählte Checkboxen werden nicht übertragen.


----------



## TheBigNeo (11. Mai 2011)

GuPhisch hat gesagt.:


> Hi,
> 
> Du müsstest so auf die Daten im Request zugreifen können:
> 
> ...



Hallo
Wie verwende ich MAP ???


----------



## TheBigNeo (11. Mai 2011)

maki hat gesagt.:


> Du nutzt JSF, da solltest du keinen Notwendigkeit haben selber mit den Postdaten zu hantieren, ManagedBeans und so...
> 
> 
> Ja, ist richtig so.
> Nicht-ausgewählte Checkboxen werden nicht übertragen.



Hallo
Wie soll ich denn mit ManagedBean auf diese Daten zugreifen ?


----------



## GuPhisch (11. Mai 2011)

Hi,

um Map zu verwenden musst Du java.util.Map importieren. Mit 
	
	
	
	





```
nameDerMapVariablen.get("keyDesGewuenschtenWertes")
```
kannst Du dir dann die gewünschten Objekte aus der Map holen.

MfG
GuPhisch


----------



## TheBigNeo (11. Mai 2011)

Hallo
Klappt nicht 
Der Post Wert ist da aber kann nicht abgefragt werden

BookController Lösch Code:


```
// Delete a Book
  public String doDeleteBook() {
    log.debug("####DO DELETE START !!!!!!!!!!!!");
    log.debug("####called");
    Long ID = 306L;

    Map<String, Object> requestMap = FacesContext.getCurrentInstance().getExternalContext().getRequestMap();

    Object test = requestMap.get("Buch");
    log.debug("OBJECT " + test);
    ID = (Long)test; --> Führt zu 
   // ID = Long.parseLong( test.toString()); --> Führt zu NullPointerException
    log.debug("Long " + ID);

    bookEJB.deleteBook(ID);
    bookList = bookEJB.findBooks();
    log.debug("####complete");
    return "listBooks.xhtml";
  }
```

Server Log:

```
bookshelf.BookController.doDeleteBook() DEBUG: ####DO DELETE START !!!!!!!!!!!!
```


```
bookshelf.BookController.doDeleteBook() DEBUG: ####called
```


```
bookshelf.BookController.doDeleteBook() DEBUG: OBJECT null
```


```
bookshelf.BookController.doDeleteBook() DEBUG: Long null
```


```
Geht durch bis die Funktion fertig ist
```


javax.ejb.EJBException:

```
javax.faces.el.EvaluationException: javax.ejb.EJBException
```


```
Caused by: java.lang.IllegalArgumentException: An instance of a null PK has been incorrectly provided for this find operation.
```


java.lang.NullPointerException: (Nur bei 
	
	
	
	





```
ID = Long.parseLong( test.toString());
```
)

```
javax.faces.el.EvaluationException: java.lang.NullPointerException
```


```
Caused by: java.lang.NullPointerException
```


----------



## Crian (11. Mai 2011)

Ist denn ein 
	
	
	
	





```
"Buch"
```
 in deiner Map drin? Lass dir doch mal die Schlüssel/Werte der Map ausgeben.


----------



## TheBigNeo (11. Mai 2011)

Hallo

Nein, das ist Ja das Problem:



> Server Log:
> 
> ```
> bookshelf.BookController.doDeleteBook() DEBUG: ####DO DELETE START !!!!!!!!!!!!
> ...




```
bookshelf.BookController.doDeleteBook() DEBUG: OBJECT null
```
 <-- ist der Wert von MAP


----------



## Crian (11. Mai 2011)

Wie ich schon schrieb:



Crian hat gesagt.:


> Lass dir doch mal die Schlüssel/Werte der Map ausgeben.



Vielleicht ergeben sich da erhellende Hinweise.


----------



## TheBigNeo (11. Mai 2011)

Hey
Okay, dann habe ich dich wohl falsch verstanden. 
Dachte 
	
	
	
	





```
OBJECT
```
 ausprinten bewirkt das.

Wie lass ich mir das denn ausgeben ?


----------



## duKennstMich (11. Mai 2011)

Guten Tag Herr Bart

Mit 
	
	
	
	





```
requestMap.containsKey("Buch");
```
 kannst du prüfen, ob "Buch" überhaupt übergeben wurde. (Gibt einen Boolean zurück.)
Mit

```
for(Object o : requestMap.values()){
        log.debug(o.toString);
}
```
kannst du alle Werte in deine Logdatei schreiben

Freundliche Grüsse


----------



## Crian (11. Mai 2011)

Hast du mal in die Dokumentation von Map geschaut?

Ich hab dir mal ein kleines Beispielprogramm geschrieben:


```
package javaThings;

import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class MapTest {

    public static void main(String[] args) {

        /* Map erzeugen: */
        Map<Integer, String> map = new HashMap<Integer, String>();
        map.put(1, "eins");
        map.put(2, "zwei");
        map.put(3, "drei");
        map.put(2, "vier");

        /* Liste der Schlüssel ausgeben: */
        System.out.println("Schlüssel:");
        for (Integer key : map.keySet())
            System.out.println("    " + key);

        /* Liste der Werte ausgeben: */
        System.out.println("Werte:");
        for (String value : map.values())
            System.out.println("    " + value);

        /* Liste der Paare ausgeben: */
        System.out.println("Paare:");
        Set<Entry<Integer,String>> set = map.entrySet();
        for (Entry<Integer,String> pair : set)
            System.out.println("    " + pair.getKey()
                    + " -> " + pair.getValue());
        System.out.println("");
    }

}
```


Mit der Ausgabe:

```
Schlüssel:
    1
    2
    3
Werte:
    eins
    vier
    drei
Paare:
    1 -> eins
    2 -> vier
    3 -> drei
```


----------



## TheBigNeo (11. Mai 2011)

Hallo
Das mit dem Ausgeben verstehe ich nicht ganz 
Da das ganze bei mir auf einem Server über ne Page läuft 
Code sieht momentan so aus:


```
// Delete a Book
  public String doDeleteBook() {
    log.debug("####DO DELETE START !!!!!!!!!!!!");
    log.debug("####called");
    
    Long ID = 1L;

    Map<String, Object> requestMap = FacesContext.getCurrentInstance().getExternalContext().getRequestMap();

    Object test = requestMap.get("Buch");

    Boolean b = requestMap.containsKey("Buch");
    log.debug("Boolean " + b);

    for (Object o : requestMap.keySet()) {
      log.debug(o.toString());
    }

    log.debug("book.getID() = "+book.getID());
    
    log.debug("OBJECT " + test);
    ID = (Long) test;
    // ID = Long.parseLong( test.toString());
    log.debug("Long " + ID);

    bookEJB.deleteBook(ID);
    bookList = bookEJB.findBooks();

    log.debug("####complete");
    return "listBooks.xhtml";
  }
```

Und ich weiss echt nicht weiter


----------



## Crian (11. Mai 2011)

Und was steht nun im log?


----------



## TheBigNeo (12. Mai 2011)

Immer noch das gleiche im OBJECT steht immer noch null



```
bookshelf.BookController.doDeleteBook() DEBUG: ####DO DELETE START !!!!!!!!!!!!
```


```
bookshelf.BookController.doDeleteBook() DEBUG: ####called
```


```
bookshelf.BookController.doDeleteBook() DEBUG: Boolean false
```


```
bookshelf.BookController.doDeleteBook() DEBUG:m.sun.faces.context.ExternalContextFactoryImpl_KEY
```


```
bookshelf.BookController.doDeleteBook() DEBUG: bookController
```


```
bookshelf.BookController.doDeleteBook() DEBUG: book.getID() = null
```


```
bookshelf.BookController.doDeleteBook() DEBUG: OBJECT null
```


```
bookshelf.BookController.doDeleteBook() DEBUG: Long null
```


----------



## TheBigNeo (13. Mai 2011)

Hallo
Hat niemand eine Lösung ?

Gruss TheBigNeo


----------



## maki (13. Mai 2011)

*verschoben*

verstehe den Grund für dein Problem ehrlich gesagt nicht, JSF bietet bestimmt schon Möglichkeiten Checkboxen zu behandeln, ohne selber Postdaten auslesen zu müssen.
JSF ist bei mir schon ein paar Jahre her (und das ist gut so), sollte aber wie gesagt kein Grund sein, selber Postdaten auslesen zu müssen.

Google suche liefert Ergebnisse wie folgendes: How can I use the check box group in JSF to select the items of database and generate a list in the next page? - Stack Overflow

Ob das für deinen Fall passt weiss ich nciht, aber irgendwo wird sich ja etwas finden lassen.


----------



## TheBigNeo (13. Mai 2011)

Hallo

Okay, ich schaus mir mal an.

Aber ich hab schon recht viel rumgegooelt bevor ich zu euch gekommen bin.


----------



## maki (13. Mai 2011)

Halte das für eine Sache die zu den Basics gehört bei JSF, der Ansatz mit Postdaten auslesen halte ich für grundlegend falsch.


----------



## Final_Striker (13. Mai 2011)

Schau dir mal die zweiten Lösungsvorschlag für "Select of Multiple Rows" an.

The BalusC Code: Using datatables

Das sollte bei dir funktionieren.

Du brauchst eine zusätzliche Map in der ein eindeutiger Identifier und ein Boolescherwert abgelegt werden.


```
<h:form>
    <h:dataTable value="#{myBean.dataList}" var="dataItem">
        <h:column>
            <f:facet name="header">
                <h:outputText value="Select" />
            </f:facet>
            <h:selectBooleanCheckbox value="#{myBean.selectedIds[dataItem.id]}" /> // <- Hier werden die Ids der Map hinzugefügt
        </h:column>

        ...
    </h:dataTable>

    <h:commandButton value="Get selected items" action="#{myBean.getSelectedItems}" />
</h:form>

-----------------------------------------------------------------------------------------------

public class MyBean {

    // Init --------------------------------------------------------------------------------------

    private List<MyData> selectedDataList;

    // Actions -----------------------------------------------------------------------------------

    public String getSelectedItems() {

        // Get selected items.
        selectedDataList = new ArrayList<MyData>();
        for (MyData dataItem : dataList) {
            if (dataItem.isSelected()) {
                selectedDataList.add(dataItem);
                dataItem.setSelected(false); // Reset.
            }
        }

        // Do your thing with the MyData items in List selectedDataList.

        return "selected"; // Navigation case.
    }

    // Getters -----------------------------------------------------------------------------------

    public List<MyData> getSelectedDataList() {
        return selectedDataList;
    }

}
```


----------



## TheBigNeo (13. Mai 2011)

maki hat gesagt.:


> Halte das für eine Sache die zu den Basics gehört bei JSF, der Ansatz mit Postdaten auslesen halte ich für grundlegend falsch.





Okay, Ja hast du ne bessere Idee wie ich das hin bekomme ?

Ich habe mir gedacht Post wird das einfachste sein, weil es automatisch übergeben wird.


----------



## Final_Striker (13. Mai 2011)

Also der Vorschlag mit der Map ist relativ einfach. Hatte ich auch mal so gemacht und es funktioniert.


----------



## TheBigNeo (13. Mai 2011)

SORRY 
Habe den oberen Beitrag nicht gesehen.
Werde es versuchen.




Final_Striker hat gesagt.:


> Also der Vorschlag mit der Map ist relativ einfach. Hatte ich auch mal so gemacht und es funktioniert.



Ja, einfach wäre es wahrscheinlich schon.
Nur leider funktioniert es nicht.
Wie du oben sehen kannst werden einfach keine Daten rein geladen.


----------



## Final_Striker (13. Mai 2011)

Ich meinte natürlich die Map in dem von mir verlinkten Beispiel. ;-)


----------



## TheBigNeo (13. Mai 2011)

Final_Striker hat gesagt.:


> Ich meinte natürlich die Map in dem von mir verlinkten Beispiel. ;-)



Jep, wie gesagt sorry, habe den voll das chaos gehabt


----------



## TheBigNeo (16. Mai 2011)

Final_Striker hat gesagt.:


> Ich meinte natürlich die Map in dem von mir verlinkten Beispiel. ;-)



Hallo
Habe jetzt versucht das mit deinem Beispiel zu machen.
Jedoch habe ich da ein Problem.
Ich weiss nicht wo 
	
	
	
	





```
myBean.dataList
```
 erstellt wird.
Auch auf der Webseite wird diese Variabel nie generiert ?


----------



## GuPhisch (16. Mai 2011)

Hi,


```
dataList
```
 ist eine Variable in der ManagedBean, auf die kann dann per Getter und Setter zugegriffen werden. In deinem Code hattest Du das ja schon mit 
	
	
	
	





```
bookList
```
 genutzt.

MfG
GuPhisch


----------



## TheBigNeo (16. Mai 2011)

Hallo

Aber, bei 
	
	
	
	





```
bookList
```
 kommt dann folgendes 
	
	
	
	





```
Type mismatch: cannot convert from element type Book to MyData
```
Also welchen Typ muss die 
	
	
	
	





```
dataList
```
 haben :S


----------



## GuPhisch (16. Mai 2011)

Hi,

vieleicht postest Du einmal deinen geänderten Code der xhtml Seite und den des ManagedBeans. Dann sollte man bessere Aussagen darüber treffen können wo dein Fehler liegt.


----------



## TheBigNeo (16. Mai 2011)

Okay

listBooks.xhtml

```
<h:body>
	<h1>List of the books</h1>
	<hr />

	<h:form>
		<h:dataTable value="#{bookController.bookList}" var="bk">


			<h:column>
				<f:facet name="header">
					<h:outputText value="Select" />
				</f:facet>
				<h:selectBooleanCheckbox value="#{bookController.selectedIds[bk.id]}" /> // <- Hier werden die Ids der Map hinzugefügt
        </h:column>

		<h:commandButton name="Delete" value="Delete"
			action="#{bookController.doDeleteBook}" />
	</h:form>
	<hr />
</h:body>
```

bookController.java

```
@EJB
  private BookEJB bookEJB;
  private Book book = new Book();
  private List<Book> bookList = new ArrayList<Book>();
  private List<Book> selectedBookList = new ArrayList<Book>();
  private List<MyData> selectedDataList;

public String getSelectedItems() {
    
    // Get selected items.
    selectedDataList = new ArrayList<MyData>();
   
    for (MyData dataItem : bookList) {
        if (dataItem.isSelected()) {
            selectedDataList.add(dataItem);
            dataItem.setSelected(false); // Reset.
        }
    }

    // Do your thing with the MyData items in List selectedDataList.

    return "selected"; // Navigation case.
}


 // ****************************************************************************************
  // Getters und Setters
  
  
  public List<MyData> getSelectedDataList() {
    return selectedDataList;
}
```

MyData.java

```
package ch.bbp.igt.bookshelf;

public class MyData {

  // Init --------------------------------------------------------------------------------------

  private boolean selected;

  // Getters -----------------------------------------------------------------------------------

  public boolean isSelected() {
      return selected;
  }

  // Setters -----------------------------------------------------------------------------------

  public void setSelected(boolean selected) {
      this.selected = selected;
  }

}
```


----------



## TheBigNeo (17. Mai 2011)

Niemand eine Idee ??

MyData.Java

```
package ch.bbp.igt.bookshelf;

public class MyData {

  // Init --------------------------------------------------------------------------------------

  private boolean selected;

  // Getters -----------------------------------------------------------------------------------

  public boolean isSelected() {
      return selected;
  }

  // Setters -----------------------------------------------------------------------------------

  public void setSelected(boolean selected) {
      this.selected = selected;
  }

}
```

listBooks.xhtml

```
<h:form>
		<h:dataTable value="#{bookController.bookList}" var="bk">

  
			<h:column>
				<f:facet name="header">
					<h:outputText value="Select" />
				</f:facet>
				<h:selectBooleanCheckbox value="#{bookController.selectedDataList[bk.ID]}" /> 
        </h:column>


  <h:commandButton value="Get selected items" action="#{bookController.getSelectedItems}" />
```


bookController.java

```
public String getSelectedItems() {

    // Get selected items.
    selectedDataList = new ArrayList<MyData>();

    for (MyData dataItem : dataList) {
      if (dataItem.isSelected()) {
        selectedDataList.add(dataItem);
        dataItem.setSelected(false); // Reset.
      }
    }

    // Do your thing with the MyData items in List selectedDataList.

    doDeleteBook();
    
    return "selected"; // Navigation case.
  }

  // Delete a Book
  public String doDeleteBook() {
    log.debug("####DO DELETE START !!!!!!!!!!!!");
    log.debug("####called");

    Long ID = 1L;

    book = bookEJB.createBook(book);
    bookList = bookEJB.findBooks();

    Map<String, Object> requestMap = FacesContext.getCurrentInstance().getExternalContext().getRequestMap();

    Object test = requestMap.get("Buch");

    Boolean b = requestMap.containsKey("Buch");
    log.debug("Boolean " + b);

    for (Object o : requestMap.keySet()) {
      log.debug(o.toString());
    }

    log.debug("book.getID() = " + book.getID());

    log.debug("OBJECT " + test);
    ID = (Long) test;
    // ID = Long.parseLong( test.toString());
    log.debug("Long " + ID);

    bookEJB.deleteBook(ID);
    bookList = bookEJB.findBooks();

    log.debug("####complete");
    return "listBooks.xhtml";
  }
```


----------



## maki (17. Mai 2011)

Wieso verwendest du eigentlich [c]MyData[/c]?
Das ist nur das Beispiel, must schon mit Book arbeiten.


----------



## TheBigNeo (19. Mai 2011)

Hallo, 



maki hat gesagt.:


> Wieso verwendest du eigentlich [c]MyData[/c]?
> Das ist nur das Beispiel, must schon mit Book arbeiten.



ich glaube die passende Antwort darauf wäre: "Weil ich dumm bin" 

Habe es jetzt angepasst.
Sieht es jetzt besser aus ?

bookController.java

```
public String getSelectedItems() {

    // Get selected items.
    for (Book book : bookList) {
      if (book.isSelected()) {
        selectedBookList.add(book);
        book.setSelected(false); // Reset.
      }
    }

    // Do your thing with the MyData items in List selectedDataList.

    doDeleteBook();
    
    return "selected"; // Navigation case.
  }
```

listBooks.xhtml

```
<h:column>
				<f:facet name="header">
					<h:outputText value="Select" />
				</f:facet>
				<h:selectBooleanCheckbox value="#{bookController.selectedBookList[book.ID]}" /> 
        </h:column>

<h:commandButton value="Get selected items" action="#{bookController.getSelectedItems}" />
```


----------



## maki (19. Mai 2011)

> ich glaube die passende Antwort darauf wäre: "Weil ich dumm bin"


Nö, denke du bist nur verwirrt.
Bei JSF sollte man auf einen guten Einstieg in die Theorie achten, bevor man loslegt imho, JSF lernt man nicht nebenbei ime.



> Sieht es jetzt besser aus ?


Funktioniert es denn?


----------



## TheBigNeo (19. Mai 2011)

Hallo

Nei, funktioniert leider immer noch nicht.
Es Kommen auch hier eifach keine Daten in die Liste rein


----------



## TheBigNeo (20. Mai 2011)

@Maki 

Weisst du vielleicht weiter ?


----------



## maki (20. Mai 2011)

Kann dir da leider nicht helfen, das letzte mal hatte ich mit JSF (1.1) vor ein paar Jahren zu tun.


----------



## TheBigNeo (23. Mai 2011)

Sonst Jemand einen vorschlag ?


----------



## jdev (23. Mai 2011)

maki hat gesagt.:


> JSF ist bei mir schon ein paar Jahre her (und das ist gut so)



Man könnte daraus schließen, Du hättest ein besseres Java Webframework gefunden??? 
(Wobei die Kriterien für "besser" sehr individuell sein können)


----------



## maki (23. Mai 2011)

jdev hat gesagt.:


> Man könnte daraus schließen, Du hättest ein besseres Java Webframework gefunden???
> (Wobei die Kriterien für "besser" sehr individuell sein können)


JSF 1.1 ist nicht wirklich angenehm gewesen, auf dem Papier sieht JSF 2 um Welten besser aus, so gesehen kann ich jedem nur von JSF 1.1(.14) abraten 
Das ist natürlich heute eine völlig sinnfreie/nutzlose Aussage, aber es soll ja noch Leute geben, die sich in struts 1.x einarbeiten wollen, davon würde ich auch abraten *g*

Habe schon länger keine Frontends für WebApps mehr geschrieben, aber Wicket sieht ganz gut aus, wie gesagt JSF 2 auch, und im Moment arbeite ich mich gerade in GWT ein.

@TheBigNeo
Hast du denn ein gutes Buch zu JSF 2?


----------



## TheBigNeo (23. Mai 2011)

maki hat gesagt.:


> @TheBigNeo
> Hast du denn ein gutes Buch zu JSF 2?



Nein


----------



## maki (23. Mai 2011)

Wie wolltest du JSF denn dann erlernen? 

Wie gesagt, IMHO ist nicht so trivial dass es per "learning by doing" funktioniert...
Persönlich fand ich das "Core Java Server Faces" gut für JSF 1.2 (klar das es nicht immer anwendbar war für JSF 1.1), scheint auch eine neue Auflage für JSF 2 zu geben.


----------



## jdev (23. Mai 2011)

maki hat gesagt.:


> Wicket sieht ganz gut aus, wie gesagt JSF 2 auch, und im Moment arbeite ich mich gerade in GWT ein.



Hi Maki,
gut zu wissen, dass JSF "nicht ganz so schlecht" ist, als Entwickler wäre es "strategisch" gut, diesen Quasi-Standard zu beherrschen - auch wenn es vielleicht produktivere Frameworks gibt (aber das ist ein anderer Aspekt für die Framework-Auswahl). Ich denke daran, gleich den Sprung von Java zu Grails (Groovy) zu machen (kürzeres Coding).


----------



## TheBigNeo (23. Mai 2011)

Hmmm 
Wäre mein Programm schon fertig, dann könnte ich jetzt da nachschauen ob ich so ein Buch rumligen habe


----------



## maki (23. Mai 2011)

TheBigNeo hat gesagt.:


> Hmmm
> Wäre mein Programm schon fertig, dann könnte ich jetzt da nachschauen ob ich so ein Buch rumligen habe


Hmmm... wieso fangen Leute gleich an ein richtiges Programm zu schreiben, wenn sie nicht mal die Grundlagen draufhaben?

Was in 99% der Fälle dabei rauskommt ist auch klar :reflect:

Wie würdest du dich fühlen wenn du einen Klemptner bestellst um eine Wasserleitung einzubauen und dann hörst, wie er zu seinem Kollegen sagt "Wasserrohrzange? Wofür baucht man die eigentlich?"


----------



## TheBigNeo (23. Mai 2011)

maki hat gesagt.:


> Hmmm... wieso fangen Leute gleich an ein richtiges Programm zu schreiben, wenn sie nicht mal die Grundlagen draufhaben?
> 
> Was in 99% der Fälle dabei rauskommt ist auch klar :reflect:
> 
> Wie würdest du dich fühlen wenn du einen Klemptner bestellst um eine Wasserleitung einzubauen und dann hörst, wie er zu seinem Kollegen sagt "Wasserrohrzange? Wofür baucht man die eigentlich?"



Hmmm okay, das ist ein Argument.
Aber aus diesem Grund bin ich ja auch in Ausbildung


----------



## maki (23. Mai 2011)

TheBigNeo hat gesagt.:


> Hmmm okay, das ist ein Argument.
> Aber aus diesem Grund bin ich ja auch in Ausbildung


Eben, dann ist deine Aufgabe wohl etwas zu lernen 

:rtfm:


----------



## TheBigNeo (23. Mai 2011)

Okay, aber das löst leider mein Momentanes Problem immer noch nicht


----------



## maki (23. Mai 2011)

IMHO ist dein momentanes Problem, dass du dich viel zu weit in die offene See gewagt hast, obwohl du noch nicht wirklich schwimmen kannst, weil du dachtest, dass deine Schwimmflügel schon ausreichen werden.
Meine das nicht böse, sollte nur mal eine Dastellung der Situation sein.
Gibt auch schlimmeres, was meinst du wie oft Leute an einem Java EE Projekt arbieten, ohne sich wirklich auszukennen, und dann dafür noch Geld nehmen.

Kann auch nix mehr sagen zu deinem konkreten JSF Problem.


----------



## TheBigNeo (23. Mai 2011)

okay Schade 

Ich werde ja dafür bezahlt es zu lernen 

Naja Danke jedenfalls ich such mal irgend wo weiter


----------



## gman (23. Mai 2011)

Hi,

in "listBooks.xhtml" speicherst du die IDs so:


```
<h:selectBooleanCheckbox value="#{bookController.selectedBookList[book.ID]}" />
```

aber im BookController greifst du auf:


```
for (Book book : bookList) {
```

zu. Das passt also nicht zusammen.

PS: Hier findest du viel Informationen zu JSF.


----------



## TheBigNeo (24. Mai 2011)

Hallo
Ja, da hast du wohl recht.
Jedoch ist mir gerad aufgefallen das mit dieser Funktion gar nicht die ID übergeben wird sondern nur der Wert 
	
	
	
	





```
ON
```
Verstehe ich das falsch oder ...



```
<h:column>
				<f:facet name="header">
					<h:outputText value="Select" />
				</f:facet>
				<h:selectBooleanCheckbox value="#{bookController.bookList[book.ID]}"/> 
        </h:column>
```


```
public String getSelectedItems() {
    log.debug("####getSelectedItems START !!!!!!!!!!!!");
    // Get selected items.
    for (Book book : bookList) {
      if (book.isSelected()) {
        log.debug(book.isSelected());
        selectedBookList.add(book);
        book.setSelected(false); // Reset.
        
        Long ID = 1301L;
        
        ID = (Long) book.getID();
        
        
        bookEJB.deleteBook(ID);
       
      }
    }
```


----------



## gman (24. Mai 2011)

Hmm,

haste dir die einzelnen Book-Objekte mal mit nem Debugger angeguckt (also einen Haltepunkt
in der for-Schleife gesetzt)? Eventuell geht es so:


```
<h:selectBooleanCheckbox value="#{bookController.bookList[book]}"/>
```

Also direkt das Book-Objekt setzen, vorher hattest du die ID des Book-Objektes gesetzt.


----------



## TheBigNeo (25. Mai 2011)

Hallo
Ich kann es leider nicht debuggen weils auf dem Server läuft


```
<h:selectBooleanCheckbox value="#{bookController.bookList[book.ID]}"/>
```

also dien Vorschlag ist einfach die 
	
	
	
	





```
.ID
```
 am schluss weg zu nehmen


```
<h:selectBooleanCheckbox value="#{bookController.bookList[book]}"/>
```


----------



## TheBigNeo (27. Mai 2011)

Funktioniert immer noch nicht


----------



## gman (28. Mai 2011)

> Ich kann es leider nicht debuggen weils auf dem Server läuft



Hast du auf deinem Entwickler-Rechner keinen Tomcat/Glassfish/Whatever installiert? Wenn doch, starte
den einfach im Debugging-Modus dann kannste auch Breakpoints setzen.



> Funktioniert immer noch nicht



Ist die Liste leer oder steht was falsches drin? Wenn das Debuggen nicht klappt musst du halt mit Logausgaben
arbeiten.


----------



## TheBigNeo (30. Mai 2011)

Hallo
Doch ist ein Glassfish kann ich da Debuggen, okay, werde ich gleich testen.


Der Post wert heisst 
	
	
	
	





```
ON
```
 in de Liste steht nichts also kommt die Schlaufe gar nicht zum Zug


----------



## gman (30. Mai 2011)

> Der Post wert heisst ON



Schmeiss den ganzen Kram mit den POST raus. Und guck dir das Beispiel aus Post #21 nochmal an, am
besten auch die verlinkte Seite. Und teste das mal in einem neuen Projekt damit du dir deins nicht noch
weiter durcheinander bringst.


----------



## TheBigNeo (1. Jun 2011)

Das mit dem Post kommt doch automatisch 
ich habs ja so gemacht


----------

