2016-04-25 9 views
0

Das ist mein Problem: Ich habe ein JSP mit einer Tabelle mit Datenträgern. Es zeigt einige Benutzer mit Bearbeitungsschaltflächen am Ende der Tabelle an. Wenn Sie auf die Schaltfläche "Bearbeiten" klicken, ruft sie eine JavaScript-Funktion auf, die die Benutzer-ID aus der Tabelle abruft und sie über die Ajax $post.-Methode an ein Servlet weiterleitet. Das Servlet empfängt Daten aus der Datenbank via Hibernate und bildet sie in Objekte ab. Mein Code funktioniert bis zu diesem Punkt. Jetzt möchte ich die Objekte zu einem JSP übergeben und es in einem neuen Fenster öffnen (ein Popup oder etwas mit einem Formular darin, um sie mit Daten von Objekten zu setzen, um den angerufenen Benutzer zu bearbeiten).Wie Daten an Jsp übergeben und in einem neuen Fenster von Servlet öffnen

  • Kann ich es vom Servlet aus tun? Oder muss ich es von Ajax tun, wenn der Anruf erfolgreich ist?

Antwort

0

Es gibt zwei Ansätze, dies zu tun: Client Side Rendering oder Server Side Rendering:

1.Server Side

Sie, dass die Servlet nicht brauchen, was Sie brauchen, ist zu Erstellen Sie Ihre zweite JSP-Datei für das Eingabeformular. Und in Ihrem Javascript, öffnet sich ein neues Fenster mit Formulareintrag JSP-Seite Adresse und fügen Sie userId Parameter der Abfragezeichenfolge dieser Seite:

function onRowClick(userId){ 
    //Open new window with the address: 'formEntry.jsp?userId=' + userId 
} 

und im formEntry.jsp können Sie diese ID erhalten von der Anfrage params:

String userId = request.getParameter("userId"); 

dann können Sie diese Benutzer-ID verwenden, um Ihre Benutzerobjekt abzurufen:

//get user from dao or service objects 
User myUser = someUserService.findUserById(userId); 

Und dann in der JSP-Seite können Sie Ihre Eingabefelder wie folgt erstellen:

<input name="firstName" type="String" value="<%= myUser.getFirstName %>" 

über Java-Code in jsp (Kommentar) mit: Sie sind darüber schreiben nicht Java-Code in JSP-Seiten zu schreiben, aber zu diesem Zweck haben Sie 2 Möglichkeiten:

  • Verwenden Sie einig Server-Seite MVC-Framework wie JSF Ansicht von Ihrem Modell und Controller
  • reines JSP aber nicht verwenden untere Ebene Schichten in JSP, nur Service Layer zu trennen und besser auch einige Taglibs haben muss Java-Code innerhalb JSPs
zu verringern


2.Client Side

Der zweite Weg ist Javascript zu verwenden, um die Aufgabe zu bewältigen. Sie können mit Ihrem Servlet-Weg gehen und Ihr Servlet gibt das JSON String of User-Objekt zurück. In Javascript, können Sie die json bekommen und es analysieren und legte seine Felder in HTML-Tags:

function ajaxRequestSuccessHandler(data){ 
    var user = //parse data and make a javascript object 
    document.getElementById('firstName').value = user.firstName; 
    .... 
    //load all of data in your form. 
} 

und dann können Sie Ihre Form an ein Servlet einreichen und aktualisierte Daten speichern.

  • Beachten Sie, dass dieser Ansatz für 1 oder 2 Formen gut, aber wenn Sie größere Software entwickeln, müssen Sie einige weitere Tools und Frameworks verwenden:

1.It ist besser zu nutzen JAX- RS oder Spring-MVC, um REST-konforme Dienste verfügbar zu machen und theme in JavaScript zu verwenden, anstatt dies mit reinen Servlets zu tun.

2.Better einige Client-Seite MV * Framework wie AngularJS oder ReactJS zu verwenden.

+0

Das ist eine gute Idee, danke. Ich möchte Javacode in jsp-Dateien vermeiden, deshalb habe ich ein Servlet aufgerufen. Also, haben Sie eine Idee, wie Sie Ihre Workaround ohne Code in JSP nehmen? Ich dachte darüber nach, einen weiteren Ajax in der formEntry.jsp zu verwenden, um Benutzerdetails zu erhalten. – user3189986

+0

Willkommen, Update meine Antwort –

Verwandte Themen