Announcement

Collapse
No announcement yet.

Eine JSF - Seite, mehrere Abschnitte, mehrere Emails

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

  • #16
    Dementsprechend könnte ich auch die Getter + Setter weglassen, oder?
    Und eben alles direkt hier eintragen, oder?
    Nein, schlechter Stil!


    Aber wie mache ich das? Sprich woher weiß ich, dass es zB den Inhalt für den Hausmeister ist?
    Wie soll das einer Wissen??

    Wenn Eingabefeld A augefüllt wurde -> dann Hausmeister
    Wenn Eingabefeld B augefüllt wurde -> dann Chef

    und weitere Kombinationen
    Christian

    Comment


    • #17
      Originally posted by Christian Marquardt View Post
      Wenn Eingabefeld A augefüllt wurde -> dann Hausmeister
      Wenn Eingabefeld B augefüllt wurde -> dann Chef

      genau das meine ich!
      Wie und wo sieht das codemäßig aus?

      Comment


      • #18
        Wie machst du es jetzt?? Wenn du auf die Eingabefelder zugreifst?
        Christian

        Comment


        • #19
          über die ManagedBean, die wiederum auf die Service-> Repository -> Entity

          Comment


          • #20
            Was sollte sich also daran ändern?
            Christian

            Comment


            • #21
              Ich verstehe nicht, woran das erkennt wird!
              Die Methode muss das doch differenzieren was ausgefüllt wurde.
              Hast du keinen Beispielcode? Vielleicht reden wir auch einander vorbei :/

              Comment


              • #22
                Vielleicht reden wir auch einander vorbei :/
                Offenbar....woher sollte ich Beispielcode nehmen
                Christian

                Comment


                • #23
                  Ich verstehe nicht, woher die Action - Methode weiß, welche Felder an die Haustechnik oder Personalabteilung etc. verschickt werden sollen bzw. welche überhaupt ausgefüllt werden.!
                  Ich mache für jede Abteilung eine eigene FORM in der JSF Seite? Richtig?

                  Zudem:
                  public boolean sendeMail(String sVon, String sAn, String sSubject, String sBody, String sFilename)
                  Als String Body soll ja nun später der Inhalt stehen.
                  Also zB.
                  Benötigt werden:
                  - Stuhl
                  - Tisch
                  Ich will ja ein komplettes Objekt und dessen Attribute auslesen.
                  Das kann ich ja auch mit der toString - Methode machen.
                  Klasse VORGANG:
                  vorgang.toString();
                  Aber wenn zB bei der Haustechnik kein Stuhl benötigt wird (also es nicht ausgewählt wurde), dann soll dies auch nicht in der eMail erscheinen.

                  Comment


                  • #24
                    Ich mache für jede Abteilung eine eigene FORM in der JSF Seite? Richtig?
                    Kann man, muss man nicht

                    es sollte doch eine getStuhl geben. Die den Wert des Eingabefeldes Stuhl zurückgibt
                    Christian

                    Comment


                    • #25
                      okay, wenn man das nicht muss!
                      So wirklich weiß ich jetzt aber dennoch nicht wie die Action - Methode aussieht!

                      public String sendeEmail(){

                      // Sende eine Email an den Admin
                      Email.sendeMail("[email protected]",
                      "[email protected]",
                      "Neuer Vorgang",
                      Vorgang vorgang);

                      // Sende eine Email an die Haustechnik (Einrichtung)
                      Email.sendeMail("[email protected]",
                      "[email protected]",
                      "Neue Einrichtung bitte bereitstellen",
                      Einrichtung einrichtung);

                      return "/vorgangverwaltung/ok";
                      }

                      Die Methode sendEmail muss ich ja dann noch ändern, weil es ja immer Objekte anderer Klassen sind (Vorgang, Einrichtung), daher stimmt das ja nicht im Parameter.
                      Mach ich das durch ein Generic?

                      Oder passt das alles so überhaupt nicht, diese Methode?

                      Comment


                      • #26
                        Die Methode sendEmail muss ich ja dann noch ändern, weil es ja immer Objekte anderer Klassen sind (Vorgang, Einrichtung), daher stimmt das ja nicht im Parameter.
                        Mach ich das durch ein Generic?
                        Wieso??

                        Ein String ist das Subject einer der Body. Das ändert sich nicht

                        Wo ist das was zu ändern?
                        Christian

                        Comment


                        • #27
                          Ich kann aber das ja auch mit
                          klasse.toString ausgeben
                          Daher muss ich im Parameter:
                          public boolean sendeMail(String sVon, String sAn, String sSubject, Klasse klasse, String sFilename)
                          und das hier:
                          messageBodyPart.setText(klasse.toString);
                          Oder stimmt das so nicht?

                          Comment


                          • #28
                            Wo ergibt

                            Klasse.toString()

                            etwas das in

                            Klasse klasse

                            passt?

                            to.String ergibt einen String und keine Klasse
                            Christian

                            Comment


                            • #29
                              Also rider,

                              Ich versuch das jetzt mal so zusammen zu fassen wie ich es verstanden habe und dir nen dementsprechenden Lösungsvorschlag zu unterbreiten.
                              Deine Situation ist doch folgende:

                              Du lässt den User über eine Seite mehrere Eingaben tätigen. Nach diesen Eingaben sollen ein oder mehrere emails erstellt werden, die an verschiedene Empfänger gehen.

                              -Deine JSP-Seite enthält JSF-Komponenten. Und die Eingaben werden in einer Backingbean gespeichert. Um zu sichern, dass wir unter Beakingbean das selbe verstehen (also das was die konvention sagt) hier ein Bsp.:

                              Du has ein Feld Betreff in deinem Formular, was über ein jsf-input-tag an
                              das attribut betreff deiner Backingbean gebunden ist.

                              -Für das Absenden des formulars benutzt du einen jsf-commandbutton und sagst bei absenden des formulars soll eine methode deine Beakingbean aufgerufen werden.

                              Das sollte die Situation sein in der du dich befindest. Du willst jetzt wissen, wie du die emails zusammenstellst und dann verschickst. Hier mein Lösungsvorchlag.

                              Zunächst würde ich durch den commandbutton eine Methode aufrufen lassen die zum Beispiel assemlbeAndSendMessages(). Der Name soll dir verdeutlichen, was die Methode tun soll. Durch den JSF-Lifecycle wird dafür gesorgt, dass die Eingaben auf deiner Seite die an die Backingbeanproperties gebunden sind in der Backingbean aktualisiert werden. Jetzt sind also alle Attribute in der Backingbean auf die Eingaben des Benutzers gesetzt. Als nächstes wird die Methode assembleAndSendMessages() aufgerufen. Die Methode sieht dann ungefähr so aus.

                              public String assembleAndSendMessages() {

                              String sBody = assembleMessageForRecipient1();
                              sendeMail(sVon, sAn, sSubject, sBody, sFilename);
                              sBody = assembleMessageForRecipient2();
                              sendeMail(sVon, sAn, sSubject, sBody, sFilename);
                              ...
                              return "success";
                              }

                              Was das jetzt soll ist folgendes. In assembleAndSendMessages() lässt du durch die assembleMessage Methoden den content für die verschiedenen Emails erstellen. Dann benutzt rufst sendest du durch die Methode sendeMail() eine email an einen Empfänger mit dem gerade zusammengestellten content. In den assembleMessage Methoden kannst du jetzt die Eingaben der Benutzer überprüfen und entscheiden welche Eingaben für welchen Empfänger zu einer email zusammengestellt werden. Denk drann, die Eingaben liegen jetzt in den entsprechenden Backingbeansproperties, also kannst du ganz einfach über die getter der Beakingbean Attribute darauf zugreifen. Die assembleMessage() Methoden und die sendeMail() Methode sind in der selben Beakingbean implementiert.

                              Welche Eingaben du jetzt für welche email brauchst entscheidest du als Entwickler. Wenn dem nicht so ist, sondern der Benutzer das Entscheiden kann, hast du ja auch entsprechende Auswahlfelder in deinem Formular. Dann musst du diese Auswahlen ja auch einfach nur in den assembleMessage() Methoden Abfragen und durch if oder switch statements die Nachrichten zusammenstellen lassen. Eine Methode zu schreiben, die alles auf einmal macht wäre kein guter Stil, weil diese Methode keinen eindeutigen Zweck erfüllen würde, sondern halt alles machen sollte.

                              Ich hoffe das hilft dir weiter. Die Methoden habe ich dir extra nicht vorimplementiert, weil es dir ja mehr bringt wenn du das Prinzip verstehst
                              „If there's more than one possible outcome of a job or task, and one of those outcomes will result in disaster or an undesirable consequence, then somebody will do it that way.“

                              Murphys law

                              Comment


                              • #30
                                Hallo,
                                deine Antwort hat mich sehr viel weitergebracht - schon mal vielen Dank.
                                Verstehe ich das richtig, dass ich dann für jede Abteilung eine Methode benötige, die mir den Inhalt zusammenstellt? Wegen deinen Methoden assembleMessageForRecipient1() und assembleMessageForRecipient2() ? (maximal habe ich 6 Abteilungen)

                                Ja, ich glaube du hast mich richtig verstanden! Ich möchte einen einzigen Command - Button haben. Dieser soll die Eingaben speichern, und zusätzlich die eMails versenden.
                                Demnach habe ich das so aufgebaut, dass die Methode insertVorgang ausgeführt wird, wenn der CommandButton geklickt wurde.
                                In der Methode insertVorgang rufe ich die sendeMail() dann auf für jede Abteilung. Das wäre dann dein Code von oben???

                                Stimmt das so wie ich es beschrieben habe?

                                Comment

                                Working...
                                X