Announcement

Collapse
No announcement yet.

RichFaces PickList Vorselektieren

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

  • RichFaces PickList Vorselektieren

    Hallo,

    ich brauche wirklich ma eure Hilfe denn ich komme leider nicht weiter.
    Sorge macht mir das Folgende:

    Code:
    <rich:pickList id="Box"					
      value="#{myBean.selectedVal}"
      converter="myConverter">
    <f:selectItems value="#{myBean.allValues}" />
    <a4j:support event="onchange"
    reRender="Box" />
    </rich:pickList>
    Ich möchte in dieser PickList auf der linken Seite alle vorhandenen "allValues" Einträge darstellen und auf der rechen Seite alle die schon ausgewählt wurden. Das heißt es gibt wenn ich diese Box aufrufe schon ein paar Werte die schon vorselektiert sind und direkt auf der rechten Seite angezeigt werden sollen.

    Alle Werte also "allValues" auf der linken Seite der Box das ist kein Problem und die werden auch angezeigt.

    Doch die vorselektierten Werte die eigentlich auf der linken Seite aufgeführt werden sollen werden nicht angezeigt.
    Ich fülle eine ArrayList mit Objekten habe es auch schon mit Mit einer ArrayList mit Strings versucht aber NIE wird was angezeigt auf der linken Seite.

    Übersicht:

    allValues:
    sind alle Einträge und werden richtig als SelectedItems auf der rechten Seite angezeigt.

    selectedVal:
    sind von allValues ausgewählte Einträge, die in der linken Box angezeigt werden sollen. Werden als ArrayList übergeben. Diese werden leider nicht angezeigt.

    HAbt ihr ein Tip was ich falsch mache?
    Bin schon sehr lange dran und habe auch glaube schon alle möglichen Sachen gegoogelt...bitte helft mir.

    Herzlichen Dank!

  • #2
    Wie sehen denn die Signaturen von dem getter/setter von selectedVal aus?

    Comment


    • #3
      Ich habe nur die set-Methode um die Values der Liste zu setzen.

      Code:
      	/**
      	 * @param selectedVal the selectedVal to set
      	 */
      	public void setSelectedVal(ArrayList<String> selectedVal) {
      		this.selectedVal = selectedVal;
      	}
      Das wäre der Versuch mit der Übergabe einfacher Strings, den habe ich nur testweise eingefügt. ansonsten ist diese Liste vom Typ "Object" also so:

      Code:
      	/**
      	 * @param selectedVal the selectedVal to set
      	 */
      	public void setSelectedVal(ArrayList<Object> selectedVal) {
      		this.selectedVal = selectedVal;
      	}
      Das heißt dann muss ich im Converter die getAsString Methode aufrufen um aus Object Strings zu machen!

      Vielen Dank für deine Rückmeldung

      Comment


      • #4
        Einen getter wirst du brauchen, da sonst die Komponente nicht weiss, wie sich rendern soll.

        Nimm' mal

        Code:
        public void setSelectedVal(List<String> selectedVal) { ... }
        und

        Code:
        public List<String> getSelectedVal() { ... }

        Comment


        • #5
          Sorry mein Fehler.

          natürlich habe ich genau diese Methode. Habe nämlich nachgesehen da es ziemlich ungewöhnlich wäre. Habe einfach zuviele Methoden in meiner Klasse:-)
          Also ist vorhanden bzw. war sie schon vorher. Lasse mir die getter und setter immer direkt generieren.
          Wo könnte der Fehler sonmst noch liegen?

          Comment


          • #6
            Wenn die Werte nicht angezeigt werden, dann höchstwahrscheinlich deswegen, weil der getter nicht aufgerufen wird. Setz' doch mal im Debugger einen Breakpoint und schau die an, wer so alles deinen getter aufruft. Wenn dort das PickList-Objekt nicht dabei ist...

            Ist der getter/setter richtig geschrieben (Groß/KleinSchreibung)?

            Ist die Signatur wirklich List<String>?

            Comment


            • #7
              Also das habe ich gerade mal gemacht. Die Getter wird aufgerufen, ist richtig geschrieben und alles ist ArrayList<String> . Das dürfe doch eigentlich nicht so schwer sein. Ich verstehe es leider nicht mehr. Was könnte noch falsch sein? Hauptsache ich bekomme erstmal nur die String-Liste angezeigt ...:-(

              Comment


              • #8
                Poste doch mal deine getter-Methode.

                Comment


                • #9
                  Mein Ablauf !

                  Code:
                  ArrayList<String> listBoxTest = new ArrayList<String>();
                  			listBoxTest.add("Hallo_1");
                  			listBoxTest.add("Hallo_2");
                  
                  			setSelectedVal(listBoxTest);
                  in der Return-Methode bekomme ich
                  Code:
                  public ArrayList<String> getSelectedVal() {
                  		System.out.println("Return: "+ selectedVal);
                  		return selectedVal;
                  	}
                  Ausgabe:
                  [Hallo_1,Hallo_2]

                  Dann sollte das doch klappen? Oder habe ich da einen Fehler?
                  Code:
                  <rich:pickList id="Box"
                  									value="#{myBean.selectedVal}"
                  									>
                  									<f:selectItems value="#{myBean.allValues}" />
                  									<a4j:support event="onchange"
                  										reRender="Boxl" />
                  								</rich:pickList>

                  Comment


                  • #10
                    Wenn du im getter bei "return selectedVal;" einen Breakpoint setzt, ist in selectedVal auch wirklich deine Liste drin?

                    In welchen Scope ist denn deine Bean? Request oder Session?

                    Comment


                    • #11
                      Ja ist drinnen habe es gerade nochmal ausprobiert. ArrayList size = 2 usw. und der Scope ist "Session".

                      Comment


                      • #12
                        Sind die vorselektierten Werte in beiden Liste allValues und selectedVal drin?

                        Comment


                        • #13
                          Ja sonst würde es eine Exception(Validation Error ) geben

                          Comment


                          • #14
                            Da kann ich jetzt nicht folgen: Welche Signatur hat den der getter/setter von allValues?

                            Wieso sollte es zur Exception kommen?

                            Wenn man mal nach ValidatorException und RichFaces googlet, dann findet man entsprechende Hinheise, dass die equals()-Methode fehlt.

                            Comment


                            • #15
                              Ich habe es mittlerweile hinbekommen selbst die Objekte auf der rechten Liste anzeigen zu lassen.
                              Nun habe ich das Problem, dass die PickList nicht den Converter benutzt bzw. beim abspeichern der rechten Seite nicht die getAsObject - Methode aufruft. Woran kann das liegen?

                              Comment

                              Working...
                              X