2016-10-21 2 views
0

Ich hoffe, jemand kann mir helfen, herauszufinden, der beste Weg, um mein Problem anzugehen. Was ich versuche zu tun, ist eine vorhandene JSP Teil (Kind) in eine andere JSP-Seite (Eltern) zu verwenden. (Diese Seiten werden von Java-Controller-Klassen in einer Weblogic 12c-Umgebung mithilfe von Spring gesteuert.) Die untergeordnete JSP enthält eine Datentabelle, die aus einer Liste erstellt wird, die von ihrem aktuellen Java-Controller bereitgestellt wird. (Das Modell Attribut wird claimList genannt.) Das erste, was ich versuchte, war zu tun mit dem Kind in die Mutter diese Weise:Ajax - Wie stellt man Daten einer Kind-JSP über eine Eltern-JSP zur Verfügung und lädt sie neu?

<jsp:include page="../../jsp/claimSummary.jsp"/> 

In der Stamm JSP, gibt es eine enthielt JS-Datei, die eine Funktion enthält, die die Builds dieselben genauen Daten, die das ClaimList-Attribut für die untergeordnete JSP benötigt. Diese Methode wird beim Laden ausgeführt.

inklusive JS-Datei für Eltern JSP:

function parent() {}; 
var claimList = []; 

$(function() { 
    parent.buildClaimList(); 
}; 

parent.prototype.buildClaimList = function() { 
    var fileNumber = $("#sidebar_primary_fileNumber").text(); 

    //request all the claims 
    $.ajax({ 
     url: contextPath + "/getClaimList", 
     type: "POST", 
     data: {fileNumber: fileNumber}, 
     dataType: 'json', 
     success: function (claims) { 
      if (claims.success) { 
       if (claims.data.length > 0) { 
        // Sort by claim date. 
        claims.data.sort(function (a, b) { 
         return new Date(a.claimDateDt) < new Date(b.claimDateDt); 
        }); 

        claimList = claims.data; 
       } 
      } 
     } 
    }); 
    $('#claim-summary-table').load("../../../WEB-INF/jsp/claimSummary.jsp", function() {}); 
    return true; 
}; 

Ich habe versucht, die Liste Zugänglichmachung den claimList lokalen Variable in der Datei Mutter JS machen ..., die nicht JSP für das Kind haben zu übersetzen, nicht überraschend . Am Ende der buildClaimList Funktion versuche ich, die untergeordnete JSP mit den aktualisierten ClaimList-Daten neu zu laden, was ebenfalls nicht funktioniert, aber ich weiß nicht warum.

So wird die untergeordnete JSP nicht neu geladen und die Datentabelle wird nie mit Daten aufgefüllt. Ich habe versucht, so wenige Änderungen wie möglich zu machen, um diese untergeordnete JSP in den Parent zu bringen, indem ich hauptsächlich die übergeordnete JSP- und/oder JS-Datei änderte. Gibt es eine Möglichkeit, die lokale Variable ClaimList von der untergeordneten JSP erkannt zu bekommen, genauso wie sie Zugriff auf das ClaimList-Attribut vom Controller-Modell aus haben würde? Und was wäre die beste Methode, um diese JSP zu aktualisieren, damit sie die vom Ajax-Aufruf gesammelten Daten anzeigt, ohne die übergeordnete Seite neu zu laden?

Danke für Ihre Hilfe!

+0

Ich sehe Sie versuchen, WEB-INF-Ordner von dem Client zuzugreifen. Dies sollte nicht funktionieren, da auf diesen Ordner nur vom Server aus zugegriffen werden kann (JSP/Servlet) – AxelH

+0

@AxelH Sinnvoll, aber die Absicht war, die untergeordnete JSP teilweise neu zu laden. Wäre es möglich, es über einen Ajax-Aufruf vom Client neu zu laden, nachdem die ClaimList erstellt wurde? – daveystones

+0

Aufruf eines Servlets/ws, das die Anfrage an die JSP weiterleitet? Wie rufen Sie die übergeordnete JSP in Ihrem Beispiel auf? Und wo ist es gespeichert = – AxelH

Antwort

0

Komponieren Sie die Daten claimList in eine HTML-Tabelle Daten und füllen Sie die Daten in der Tabelle.

var tableData = {some processing of claimList} 

nun diesen Table Variable verwenden und aktualisieren $('#claim-summary-table')

$('#claim-summary-table').html(tableData); 
+0

Ich brauche die untergeordnete JSP, um ihre eigenen Javascript-Komponenten auszuführen, wenn sie im übergeordneten Element enthalten sind. Mein Problem ist, dass ich nicht weiß, wie ich den Anforderungsparameter angeben kann, den der Controller benötigt, um die Datentabelle in der untergeordneten JSP mit den entsprechenden Daten generieren zu können.Dieser Weg scheint eine Neuschreibung der vorhandenen JSP zu sein, indem die Tabelle programmatisch in Javascript geschrieben wird. Das sieht so aus, als wäre es eine größere Überarbeitung, und meine Erfahrung ist leider mehr auf der Java-Seite als auf der UI/Javascript-Seite. – daveystones

Verwandte Themen