Announcement

Collapse
No announcement yet.

Export view

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

  • Export view

    Hallo,

    ich bin auf der suche nach einen eleganten ansatz um daten aus einer view / bean zu exportieren, so das der user sie auf seiner platte speichern kann (ähnlich der export funktion aus der displayTagLib). kann mir jemand einen weg zeigen wie es geht? als ich denke das ich den responsetyp z.B. auf txt/csv setzen muß und dann irgendwie meine daten anhängen muß. wie setze ich einen dateinamen dabei? und wie muß ich die struts-config setupen damit ich diese action per link ausführen kann, da ich irgendwie nicht ohne ziel angabe klargekommen bin.
    <br><br>
    für jede hilfe danke.

  • #2
    <p>Hallo,</p>
    <p>
    Zunächst einmal muss man in der View Komponente den Responsetype auf das gewünschte Format setzen - also z. B. auf text/comma-separated-values oder so. Eine schöne Liste der Mime Types findet sich z. B. unter
    </p>
    <p><b>http://www.webmaster-toolkit.com/mime-types.shtml</b></p>
    <p><b>http://de.selfhtml.org/diverses/mimetypen.htm</b></p>
    <p>In einer Standard-JSP sieht das so aus:</p>
    <pre>
    &lt;%page contentType="text/comma-separated-values" %&gt;
    </pre>
    <p>In einem Servlet ungefähr so:</p>
    <pre>
    response.setContentType("text/comma-separated-values");
    </pre>
    <p>In der View darf jetzt natürlich kein HTML mehr generiert werden, sondern man muss mittels sich den OutputStream besorgen und direkt dorthin schreiben.</p>
    <p>Bis hierhin unterscheiden sich die beiden Ansätze nur in der Syntax, es gibt IMHO aber einen Punkt, der für die Implementierung mittels Servlets spricht. Und zwar wird standardmäßig der Name der Datei in der URL als Vorschlagswert für den Namen für "Datei speichern unter..." genommen - im Falle einer JSP hieße das also, dass eine csv-Datei mit dem Namen "*.jsp" gespeichert würde - ein bißchen unschön. Mit einem Servlet-Mapping kann man dies umgehen, denn da kann man ja beliebige Endungen erzeugen.</p>
    <p>Mir fällt derzeit aber keine Hilfestellung ein, die einem Struts hier geben würde. Ich vermute, dass man sowas nur mit Servlets und über die <i>web.xml</i> regeln muss. Wenn doch eine/r eine Idee hat, würde mich das auch interessieren.</p>
    <p>Gruss, Jörg</p&gt

    Comment


    • #3
      Hallo Jörg,

      danke für deinen tip. mit dem servlet habe ich es gemacht und auch somit schönen einen dynamischen dateinamen erzeugen können, sehr schön. ich habe es mittels einer ForwardAction sozusagen Struts kompatibel gemacht, aber so richtig schön ist das leider nicht.

      was heißt imho?

      dank für deine hilfe

      Comment


      • #4
        Hallo Jan!

        Ja. Schön isses nicht, aber Hauptsache, es klappt. Leider werden bei Struts offenbar nur JSPs als View-Komponente in Betracht gezogen und damit liegt auch der Hauptfokus auf Markup Languages.

        IMHO heißt übrigens In My Humble Opinion.

        Gruß, Jör

        Comment


        • #5
          Hallo Jörg,

          Nur ein kleiner Hinweis zu Deinem Problem mit den Dateinamen:

          Man kann auch servlet-mappings für JSPs definieren. Z.b.

          <PRE>
          &lt;servlet&gt;
          &lt;servlet-name&gt;myservlet&lt;/servlet-name&gt;
          &lt;jsp-file&gt;/jsp/mycsv.jsp&lt;/jsp-file&gt;
          &lt;load-on-startup&gt;2&lt;/load-on-startup&gt;
          &lt;/servlet&gt;
          &lt;servlet-mapping&gt;
          &lt;servlet-name&gt;myservlet&lt;/servlet-name&gt;
          &lt;url-pattern&gt;/mycsv.csv&lt;/url-pattern&gt;
          &lt;/servlet-mapping&gt;
          </PRE>

          Nun kann man in der URL mycsv.csv angeben und es wird die JSP mycsv.jsp gerendert.

          Ab Servlet 2.4/JSP 2.0 (Tomcat 5) kann man die Datei auch tatsächlich mycsv.csv nennen und dem Server sagen, das es sich um eine JSP handelt.

          Gruß,

          Alwi

          Comment


          • #6
            hallo zusammen,

            danke für eure hilfe, es tut jetzt und das sogar gar nicht so langsam. auf das problem mit den views unter struts möcht ich noch mal kommen. ist da eine änderung mit struts 2.0 in aussicht? stimmt das das struts langfristig von Java Server Faces abgelöst werden soll?

            schönes we

            Comment


            • #7
              Hallo zusammen,

              Struts 2.0 soll eine bessere Unterstützung von anderen Views bieten, v.a. XSLT. Das wird dann wohl so aussehen wie StrutsCX ( http://it.cappuccinonet.com/strutscx/index.php )

              Struts 2.0 soll ja auch eine JSF Integration bieten. Das läuft dann wohl darauf hinaus, den Controllermechanismus (ActionServlet->Action->JSP) beizubehalten und auf den JSPs JSF-Tags und damit auch den JSF-Komponentenbaum zu verwenden.

              Ob JSF Struts ablöst kann man wohl nur abwarten. Ich bin mir auch nicht sicher, ob es wirklich Sinn macht, beide zusammen zu benutzen.

              JSF kann bei den Views wesentlich mehr als Struts, alleine das Event-Modell, die Components, Converters, Validators und die umfangreichere Tag-Library.
              Die Navigation und Workflowsteuerung finde ich bei Struts etwas übersichtlicher, das kann aber auch daran liegen das ich Struts gewöhnt bin. Struts gibt es halt schon sehr lange und die fehlenden Teile wurden durch andere OpenSource-Projekte und Eigenentwicklungen dazugebaut. Zu JSF gibt außer der Referenzimplementierung wohl auch noch keine richtig gut funktionierende Version.

              Gruß,

              Alwi

              Comment


              • #8
                vielen dank,

                sehr informativ

                Comment

                Working...
                X