Announcement

Collapse
No announcement yet.

Vector in JavaBean, JSF?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Vector in JavaBean, JSF?

    Hi, bin neu bei JSF. Habe folgendes Problem:

    Sei das ein JavaBean:

    Code:
    @ManagedBean
    public class Slist {
    	
    	private Vector<String> Tupel = new Vector<String>();
    	
    	public void setTupel(Vector<String> tupel) {
    		this.Tupel = tupel;
    	}
    	
    	public Vector<String> getTupel() {
    		return this.Tupel;
    	}
    }
    Das Bean soll beliebig viele vom Benutzer einzugebende gleiche Objekte (Beispiel: Strings) in einem Vector (?) aufnehmen.

    Wie müßte das Facelet aussehen?
    Der folgende Ansatz funktioniert (natürlich) nicht ...

    Code:
    <h:form>
    <fieldset>
    <h:inputText value="#{slist.tupel}"></h:inputText><br/>
    <h:inputText value="#{slist.tupel}"></h:inputText><br/>
    <h:inputText value="#{slist.tupel}"></h:inputText><br/>
    <h:commandButton value="Save!" action="/showslist.xhtml"/>
    </fieldset>
    </h:form>
    Eine noch zu implementierende Funktionalität, wird die Anzahl der Eingabefelder variieren können (aber das ist nicht die Frage).

    Dank Euch!

  • #2
    Würde dann nicht mit einem Vector arbeiten, sondern mit einer List (ArrayList) und dann

    http://java.sun.com/javaee/javaserve...ui/repeat.html

    nutzen
    Christian

    Comment


    • #3
      Wow, schnelle Antwort

      Originally posted by Christian Marquardt View Post
      Würde dann nicht mit einem Vector arbeiten, sondern mit einer List (ArrayList) und dann

      http://java.sun.com/javaee/javaserve...ui/repeat.html

      nutzen
      aber was macht das für einen Unterschied ob List oder Vector? Und was kann mir die Schleife nutzen?
      Bei allem was ich in Google so finde, scheint ui:repeat nur für Output zu sein (genauso wie dataTable).
      Die Schleife funktioniert zwar, Änderungen der Feldinhalte werden aber offenbar nicht an die Bean übergeben ...
      Zuletzt editiert von Matthias Schmidt; 04.04.2010, 21:30.

      Comment


      • #4
        Wenn es dir lediglich um die Eingabe geht, dann sollte ein String-Property reichen. Du bindest dann an allen inputfields per value immer das gleiche String-Property.
        Bei <n> inputfields wird dann der setter n-mal aufgerufen und dann kannst du so sie "eintreffenden" Strings einsammeln.

        Comment


        • #5
          Wie meinst Du das? Natürlich sollen nach dem Response alle Eingaben im Bean sein. Das mehrfache Aufrufen des Setters überschreibt doch den einzelnen String immer wieder, oder?

          Comment


          • #6
            Originally posted by Matthias Schmidt View Post
            Wie meinst Du das? Natürlich sollen nach dem Response alle Eingaben im Bean sein. Das mehrfache Aufrufen des Setters überschreibt doch den einzelnen String immer wieder, oder?
            Code:
            private List<String> myList = new ArrayList<String>();
            
            public void setValue(String value) {
               myList.add(value);
            }
            
            public String getValue() {
              return "";
            }
            setValue() wird n-mal aufgerufen und du sammelst die Strings in einer Liste. Das funktioniert natürlich nur für das Einsammeln, aber nicht zum Ausgeben der Werte auf der Seite.

            Comment


            • #7
              Originally posted by ramon98 View Post
              Code:
              private List<String> myList = new ArrayList<String>();
              
              public void setValue(String value) {
                 myList.add(value);
              }
              
              public String getValue() {
                return "";
              }
              setValue() wird n-mal aufgerufen und du sammelst die Strings in einer Liste. Das funktioniert natürlich nur für das Einsammeln, aber nicht zum Ausgeben der Werte auf der Seite.
              Jetzt bin ich aber ganz konfus Damit der Mechanismus in JSF funktioniert (und genau nach der Methode suche/frage ich ja) muss doch die Setter-/Getter-Methode mit demNamen des Attributs übereinstimmen, oder? Wenn also in Deinem Beispiel die Liste myList heißt, müßte die entsp. Setter-Methode doch setMyList (oder setmyList?) heissen. Andere Methoden müßten doch irgendwie über einen Listener eingetütet werden ...

              Comment


              • #8
                Natürlich musst du dann auf der Seite z.B.

                <h:inputText value="#{slist.value}"></h:inputText><br/>
                <h:inputText value="#{slist.value}"></h:inputText><br/>
                <h:inputText value="#{slist.value}"></h:inputText><br/>

                nehmen. Ich habe ja auch nicht behauptet, dass du direkt auf die Liste in der Seite zugreifst...
                Zuletzt editiert von ramon98; 07.04.2010, 11:46.

                Comment

                Working...
                X