Announcement

Collapse
No announcement yet.

JSF externe Webseite mit POST-Abrufen und im neuen Fenster anzeigen

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

  • JSF externe Webseite mit POST-Abrufen und im neuen Fenster anzeigen

    Hallo allerseits!

    Ich bin ein Neuling auf dem JSF-Gebiet, obwohl ich bereits Erfahrungen mit
    Java und Web Entwicklung habe. Vor mir steht gerade die Aufgabe eine
    komplexe JSF-Anwendung um einige Export-Funktionen zu erweitern.
    Das meiste habe ich bereits geschafft, scheitere jedoch an einer Stelle
    an der ich eigentlich nicht mit Schwierigkeiten gerechnet habe.

    Ich versuche nun seit einigen Tagen verzweifelt in einem separaten Fenster
    ein externes Web-Portal aufzurufen, der einige POST-Parameter erwartet.
    Zu diesem Zweck öffne ich ein neues Browser-Fenster und rufe darin eine
    JSP-Seite auf (Ich weiß, dass das nicht gut ist, finde aber keine andere Lösung).
    Diese greift auf einige Beans der Anwendung zu und erzeugt eine
    HTML
    Seite mit einer simplen Form und den für das Portal erforderlichen Parametern
    (leider ist die Datenmenge relativ groß, so dass ich gezwungen
    bin die Daten aus den Beans der Anwendung zu extrairen). Anschließend
    wird die Form in einem OnLoad-Event abgeschickt und ich erhalte die
    erforderliche Portal-Seite in einem separatem Fenster.

    Soweit geht auch alles. Leider funktioniert anschließend meine eigene Anwendung
    nicht mehr. Es scheint so als ob die Anwendung die Verbindung zum
    Server verloren hätte. Es erfolgt zwar die Client-Seitige-Reaktion auf die
    Klicks (Menuitems lassen sich selektieren, Listen scrollen und Einträge darin
    auswählen), aber die dynamischen Daten werden nicht aktualisiert. Sogar
    die seiteneigene "Loading ..." Animation läuft wie gewünscht ab, nur sind die
    Daten der Seite anschließen unverändert. Es erfolgen keine Fehlermeldungen
    und der JBoss wirft keine Fehler. Aktualisiert man die Seite jedoch mit F5,
    funktioniert diese wieder. Ich vermute das ich durch die JSP-Seite irgendwie
    den Abarbeitungszyklus von JSF korrumpiere, obwohl die JSP-Seite keine Daten
    ändert, sondern nur abfragt. Andere externe Seiten mit GET-Parametern
    lassen sich hervorragend aufrufen und beeinträchtigen auch nicht
    die Hauptanwendung. Offenbar ist der von mir gewählte Weg eine Externe
    Seite mit POST-Parametern zu öffnen nicht gerade "optimal". Daher wende ich
    mich nun an die Experten mit der Frage: Wie würdet ihr die Sache angehen.
    Ich erwarte keine Komplettlösung, sondern nur einen Wink in die richtige Richtung.

    Ich danke allen im Voraus, schon allein dafür, das ihr die Geduld hattet das alles durchzulesen .


    Viele Grüße
    havi

  • #2
    "aber die dynamischen Daten werden nicht aktualisiert."

    das klingt so nach Ajax? Welche Komponenten-Bibliothek(en) verwendest du denn?

    Wie sieht denn deine JSP so aus (Form-Tag, commandbutton, commandlink, ...)?

    Comment


    • #3
      Hallo ramon98,

      ja, in der Seite kommt auch Ajax vor, allerdings nicht in dem betroffenem Teil
      der WEB-Anwendung. Mit "dynamischen Daten" meinte ich im allgemeinen die
      Daten die aus den Beans kommen. Der Server scheint nicht mehr auf die
      normalen JSF-Requests zu antworten. Das JSP sieht wie folgt aus:

      PHP Code:
      <%@ page language="java" pageEncoding="UTF-8"%>

      <%@
      page import="javax.ejb.SessionContext"%>
      <%@
      page import="java.util.List"%>
      <%@
      page import="de.client.modules.BwExportRecord"%>
      <%@
      page import="de.client.modules.interfaces.IBwExportSource"%>
      <%@
      page import="de.client.modules.interfaces.IBwSettings"%>

      <%@ 
      taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
      <%@ 
      taglib uri="http://java.sun.com/jsf/core" prefix="f" %>

      <!
      DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      <
      html>
      <
      head>
          <
      title>...</title>
          
          <
      meta http-equiv="pragma" content="no-cache">
          <
      meta http-equiv="cache-control" content="no-cache">
          <
      meta http-equiv="expires" content="0">            
          <
      script type="text/javascript" src="..\resource\bw-export.js"></script>
      </
      head>

      <
      body onload="sendForm('bw-form');">
          <
      f:view>
              <% 
                  
      IBwExportSource explorer = (IBwExportSource)request.getSession().getAttribute("ExplorerBean");
                  
      IBwSettings settings null;
                  List 
      records null;
                  
      String collectionKey null;
                  
      String bwKey null;
                  
                  
      //Explorer bean is avaliable?
                  
      if (explorer != null) {
                      
      //Get values
                      
      settings explorer.getBwSettingsProvider();
                      
      records explorer.getRecords();
                      
      collectionKey explorer.getCollectionKey();
                      if (
      collectionKey != nullbwKey settings.getBwKey(collectionKey);
                  } else 
      out.write("ERROR - No Explorer-Bean located in the session!");
                  
                  if (
      records != null && settings != null && bwKey != null) {                
               %>     
                  <
      h2>BW-Export sending data ... Please wait!</h2>
                  <
      form id="bw-form" action="<%= settings.getBwActionUrl() %>" method="post">
                      <%-- 
      Create form content ... --%>            
                      <%                                                                                                                         
                          for (
      int idx 0idx records.size(); idx++) {
                              
      BwExportRecord record = (BwExportRecord)records.get(idx);                        
                              
      String varInputName "var_name_" + (new Integer(idx+1)).toString();
                              
      String extInputName "var_value_ext_" + (new Integer(idx+1)).toString();
                              
      String fieldName settings.getExportField(collectionKey);
                              
      Object id record.getValue(fieldName);
                              
                              if (
      id == null
                                  throw new 
      NullPointerException("The record " record.getUrn() + " doesn't have the field named '"fieldName "'!");                         
                              
      String extInputValue id.toString();                        
                      %>    
                              <
      input type="hidden" name="<%= varInputName %>" value="<%= bwKey %>"/>
                              <
      input type="hidden" name="<%= extInputName %>" value="<%= extInputValue %>"/>
                              <
      br>
                      <%             
                          }    
                       %>
                  </
      form>
              <% } else { %>
                  <
      h2>No data for BW Export available!</h2>     
              <% } %>    
          </
      f:view>
      </
      body>
      </
      html

      Comment

      Working...
      X