Mam scenariusz, w którym forma musi być wypełniona tak łatwo, jak to możliwe. Wartości, które należy wypełnić w formie, są poproszone od użytkownika początkowo i przechowywane w bazie danych.

Następnie, gdy użytkownik kliknie na przycisk, wywołana jest funkcja JavaScript, która automatycznie wypełnia wszystkie pola w postaci z wartościami uzyskanymi przez JSP / Servlet.

Chcę odzyskać wartości (które mają być wypełnione w formularzu) z bazy danych za pomocą Servlet / JSP ... Teraz powinno być jakiś sposób, aby funkcja JavaScript do wypełnienia tej wartości (która została uzyskana przez Servlet / JSP) w formularzu ...

Czy można wykonać takie udostępnianie danych / zmiennych między JSP / Servlets a funkcjami JavaScript? Funkcje JavaScript będą częścią JSP (które pobierają wartość, która powinna być wypełniona w formie).

1
user974573 3 październik 2011, 17:08

3 odpowiedzi

Najlepsza odpowiedź

Jeśli żądanie zostanie wysłane synchronicznie (np. Przycisk przesyłania formularza), niekoniecznie potrzebujesz JS dla tej pracy. Po prostu pozwól JSP / EL wydrukować je natychmiast jako wartości wejściowe oparte na danych, które są prepulowane przez serwlet. Na przykład, zakładając, że ${user} jest typowym JavaBean, który jest przygotowywany przez serwlet:

<input type="text" name="name" value="${fn:escapeXml(user.name)}" />
<input type="text" name="city" value="${fn:escapeXml(user.city)}" />
<input type="text" name="country" value="${fn:escapeXml(user.country)}" />

(fn:escapeXml() jest po prostu zapobieganie atakom XSS)

Jeśli żądanie zostanie wysłane asynchronicznie (np. Za pomocą AJAX), musisz po prostu pozwolić, aby serwlet zwrócił dane w formacie, który jest łatwo przenikalny przez JS, na przykład JSON.

{
    "username": "Bauke Scholtz",
    "city": "Willemstad",
    "country": "Curaçao"
}

Który można następnie użyć w następujący sposób w funkcji zwrotnej odpowiedzi AJAX (gdzie {X0}} jest uzyskanym obiektem JSON):

document.getElementById("name").value = user.name;
document.getElementById("city").value = user.city;
document.getElementById("country").value = user.country;

JQuery sprawia, że tak łatwiej jest. Zobacz także Jak korzystać z serwletów i AJAX?

1
Community 23 maj 2017, 11:47

Możesz uzyskać dostęp do swojej bazy danych dynamicznie za pomocą XMLHTTTPREQUEST. Więcej informacji + odpowiednie przykłady Przeczytaj: http://www.w3schools.com/ajax/ajax_aspphp.asp

0
user975343user975343 3 październik 2011, 13:51

Klient JavaScript w przeglądarce nie ma bezpośredniego dostępu do środowiska na serwerze (i nie - wyobraź sobie, jak byłoby źle, jeśli wszystkie strony złamały dzień, w którym postanowiłeś użyć innego rozwiązania serwera). Zasadniczo masz dwa wybory:

  • Dołącz wszystkie dane, jakie kiedykolwiek potrzebujesz na stronie, którą służysz do klienta (być może forma HTML jest generowana do Twoich potrzeb itp.)

  • Ręcznie poproś o dodatkowe informacje dynamicznie przez XMLHTTTPREQUEQUEST (AKA AJAX). Jest to jedyny sposób, jeśli możesz określić, jakie dane potrzebne dynamicznie, po obciążeniu strony.

1
hugomg 3 październik 2011, 13:34