Listy rozwijane JSP

0

Witam,
Mam pewien problem, chciałbym stworzyć dwie listy rozwijane w JSP, przy czym mają być one zależne od siebie. Czyli gdy z listy A wybiorę opcję 1 to lista B ogranicza mi wybór opcji. Dane będą pobierane z bazy danych. W jaki sposób można to zrealizować? Jakieś wskazówki ?

0

Najprosciej to dać javascriptowe eventy na wybieranie pozycji z listy i jak user coś wybierze to ładujesz z serwera zawartość do drugiej listy.

0

Tak już robiłem tylko jest problem w tym, że JS nie radzi sobie z pobieraniem aktualnej wartości z selecta.
Tutaj przykład:

<form>
<select id="sel"  onchange="onChange()">
<option id ="opt"><%rs.getString("Jakas kolumna")%></option> //Pobranie z bazy kolumny po wczesniejszym ustaleniu połączenia 
</select>
</form>
<script>
function onChange(){
          var wynik = document,.getElementById("opt").text.Content; // jak dam w nawiasie "sel" zwraca całą kolumnę
          alert(wynik); //zwraca pierwszy wiersz kolumny, nawet kiedy wybiorę z listy następny
}
</script>

Chodzi o wyświetlenie aktualnego wyboru z listy

0
Błękitny Wąż napisał(a):

Tak już robiłem tylko jest problem w tym, że JS nie radzi sobie z pobieraniem aktualnej wartości z selecta.
Tutaj przykład:

<form> <select id="sel" onchange="onChange()"> <option id="opt"><%rs.getString("Jakas kolumna")%></option> //Pobranie z bazy kolumny po wczesniejszym ustaleniu połączenia </select> </form> <script> function onChange(){ var wynik = document,.getElementById("opt").text.Content; // jak dam w nawiasie "sel" zwraca całą kolumnę alert(wynik); //zwraca pierwszy wiersz kolumny, nawet kiedy wybiorę z listy następny } </script> Chodzi o wyświetlenie aktualnego wyboru z listy

Z tej składni to nic nie odczytasz, sorry, tutaj lepiej:
title

0
<select id="sel"  onchange="onChange(this.options[this.selectedIndex].value)">
//
function onChange(selectedValue){
//
}
0
Shalom napisał(a):
<select id="sel"  onchange="onChange(this.options[this.selectedIndex].value)">
//
function onChange(selectedValue){
//
}

Dzięki, działa znakomicie.
Mam jeszcze problem z umieszczeniem tego wyniku wewnątrz jsp:

Czy masz pomysł w jaki sposób można by zrealizować coś takiego?

<% String result = "selectedValue lub onChange()" %>

0

Nie rozumiem co to dla ciebie znaczy ;]

0

Muszę przypisać ten wynik do zmiennej string w jsp która jest wykorzystywana później do zdefiniowania polecenia w sql

1
  1. Dlaczego w ogóle robisz to w JSP i skryptletach? Wiesz że ta technologia jest starsza od ciebie i umarła jeszcze jak sikałeś w pieluchy?
  2. Budowanie SQLa na podstawie wartości wysyłanej z UI przez usera brzmi jak bardzo zły pomysł i na 99% jest tam SQL Injection ;]
  3. Mieszasz tu zupełnie poziomy abstrakcji i kolejność wykonania. Skryptlety JSP są wykonywane po stronie serwera przed wyrenderowaniem strony podczas gdy javascript wykonuje się po stronie klienta w jego przeglądarce.
0
Shalom napisał(a):
  1. Dlaczego w ogóle robisz to w JSP i skryptletach? Wiesz że ta technologia jest starsza od ciebie i umarła jeszcze jak sikałeś w pieluchy?
  2. Budowanie SQLa na podstawie wartości wysyłanej z UI przez usera brzmi jak bardzo zły pomysł i na 99% jest tam SQL Injection ;]
  3. Mieszasz tu zupełnie poziomy abstrakcji i kolejność wykonania. Skryptlety JSP są wykonywane po stronie serwera przed wyrenderowaniem strony podczas gdy javascript wykonuje się po stronie klienta w jego przeglądarce.

Tak mi kazano więc robię, nasz klient nasz paaaaannn. XD
Rozumiem o co Ci chodzi.
To w takim razie jakie rozwiązanie byś proponował ?

0

Jesteś pewien że ktoś ci kazał to robić w JSP a nie np. w Sprint MVC z JSTL jako silnikiem templatów? Bo to róznica jak między krzesłem i krzesłem elektrycznym...

0

Jestem pewny. Jak się posypie to trudno, ale takie miałem polecenia więc wiesz..
Masz jakieś propozycje co z tym fantem zrobić ?

0

Tak nawiasem mówiąc, przy listach rozwijanych warto użyć value, do jednoznacznej identyfikacji opcji, którą wybieramy, zamiast posługiwać się tekstem.

<select id="sel"  onchange="onChange()">
<option id ="opt" value=<%rs.getString("klucz/jednoznaczny identyfikator")%  ><%rs.getString("Jakas kolumna przyjazna dla usera")%></option> //Pobranie z bazy kolumny po wczesniejszym ustaleniu połączenia 
</select>
0
Andrzej Guziec napisał(a):

Tak nawiasem mówiąc, przy listach rozwijanych warto użyć value, do jednoznacznej identyfikacji opcji, którą wybieramy, zamiast posługiwać się tekstem.

<select id="sel"  onchange="onChange()">
<option id ="opt" value=<%rs.getString("klucz/jednoznaczny identyfikator")%  ><%rs.getString("Jakas kolumna przyjazna dla usera")%></option> //Pobranie z bazy kolumny po wczesniejszym ustaleniu połączenia 
</select>

Wiem, że tak by było lepiej ale nie mam możliwości "zakluczowania" sobie tabel.

0

No to faktycznie masz hardcorowe zadanie :)
Ogólnie wydaje mi się, że musisz do tego dorobić metodę w serwlecie, która jako parametr dostanie identyfikator / wartość tego value z onchenge().
Samą metodę musisz wywołać ajaxem.
No i potem ją obrobić dla drugiej opcji.
JSP faktycznie już trochę wiekowe, ale pewnie nie na jednej produkcji jeszcze działa.

0

Hmm.. no cóż pozostaje mi to zrobić tak jak mówisz w skryptlecie :/

1 użytkowników online, w tym zalogowanych: 0, gości: 1