Przypisanie wartości w Javascript do zmiennej Java i odczyt

Przypisanie wartości w Javascript do zmiennej Java i odczyt
BA
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 3 lata
  • Postów:43
0

Cześć, mam problem związany z przekazywaniem wartości zmiennej pomiędzy .jsp a java.

Otóż mam w formie (ReportsToHRForm.java) zmienną oraz przypisane do niej settery/gettery:

Kopiuj
private String assignedUsersSelected[] = new String[] {};

	public String[] getAssignedUsersSelected() {
	    return assignedUsersSelected;
	}

	public void setAssignedUsersSelected(String[] assignedSalonsSelected) {
	   this.assignedUsersSelected = assignedUsersSelected;
	}

Jest ona na początku pusta. Później, jak strona jest przeklikiwana przez użytkownika, to w jsp dodaję do tej zmiennej wartości:

Kopiuj
	<td>
	<html:select name="ReportsToHRForm" property="assignedUsersSelected" size="10" multiple="true" style="width: 150px">
		<html:optionsCollection property="assignedUsers" value="id" label="login"/>
	</html:select>
	</td>
	<td>
		<html:img page="/images/arrowRight.png" border="0" styleClass="toplink" onclick="addSelectedUsers();"/>
	</td>

Trochę Javascript

Kopiuj
            function addSelectedUsers(){
                unassignedUsersSelected = document.getElementsByName('unassignedUsersSelected')[0];
                assignedUsersSelected = document.getElementsByName('assignedUsersSelected')[0];
                               
            alert(assignedUsersSelected);
                               
            for (i=0; i < unassignedUsersSelected.options.length; i++){
                if(unassignedUsersSelected.options[i].selected==true){
                   
                   
                   
                    var ooOption = document.createElement("OPTION");
                        assignedUsersSelected.options.add(ooOption);
                        ooOption.innerText = unassignedUsersSelected.options[i].text;
                   
                    unassignedUsersSelected.options.remove(i);
                    i--;
                }  
            }
            sort('assignedUsersSelected');
            alert(assignedUsersSelected.options[0].value);
            alert(assignedUsersSelected.options[0].text);
            }

I tu alerty krzyczą mi poprawnie, że jakieś tam wartości do assignedUsersSelected.options[0] przypisuje.

Następnie jak kliknę buttona na formie, to przechodzę do akcji w Java, gdzie odczytuję wartości z assignedUsersSelected w ten sposób:

Kopiuj
    public Collection getSelectedUsersAsCollection() {
          ArrayList list = new ArrayList();
          if (assignedUsersSelected != null) {
              log.error(assignedUsersSelected.length);
             for (int i=0; i < assignedUsersSelected.length; i++) {
                list.add(assignedUsersSelected[i]);
             }
          }
          return list;
       }

i log mi zawsze zwraca, że w assignedUSersSelected.length jest 0... gdzie ja tu gubię te wartości? operacje w Javascript trzeba jakoś "commitować" ?

AK
Powiedzcie, że to tylko upały, i że tego nie ma naprawdę ... ;)
KamilAdam
  • Rejestracja:ponad 6 lat
  • Ostatnio:28 dni
  • Lokalizacja:Silesia/Marki
  • Postów:5505
4
Badboss napisał(a):

i log mi zawsze zwraca, że w assignedUSersSelected.length jest 0... gdzie ja tu gubię te wartości? operacje w Javascript trzeba jakoś "commitować" ?

Tak, nazywa się to ajax


Mama called me disappointment, Papa called me fat
Każdego eksperta można zastąpić backendowcem który ma się douczyć po godzinach. Tak zostałem ekspertem AI, Neo4j i Nest.js . Przez mianowanie
Charles_Ray
  • Rejestracja:około 17 lat
  • Ostatnio:dzień
  • Postów:1875
2

@Badboss ale wiesz, że z poziomu przeglądarki nie masz dostępu do Javowych kolekcji, które są przecież na backendzie? :)


”Engineering is easy. People are hard.” Bill Coughran
AK
Kolega OP 2 lata temu wynajmował wykonawców do zadań ... mamy więcej pytań?
Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
4

o_O

  1. JSP w roku 2021...
  2. Tak, o tym co JS robi w przeglądarce backend NIC nie wie, dopóki ten JS nie wyśle jakiegoś requestu, albo nie przekaże tych informacji w jakiś inny sposób.

"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
RequiredNickname
ja w takim stacku rzeźbiłem jeszcze kilka miesięcy temu (do tego struts i ejb) :(
TR
@RequiredNickname: ja też i chyba do tego wrócę, przynajmniej za przyzwoite pieniądze... ech
Charles_Ray
Ostatnio na LI widziałem reklamę świeżutkiego kursu online z JQuery :)
BA
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 3 lata
  • Postów:43
0

Dzięki za podpowiedź, właśnie tego mi trzeba było, działa :)

Nie ma co się stresować, technologia stara, bo taką wymaga klient, a mi trochę wiedzy brakuje, więc dopytuję o głupoty. Ale wasze podpowiedzi dały mi 100% szansy na pójście dalej. Jeszcze raz dzięki :)

Edit:
Rozwiązanie

Kopiuj
			function selectAllUsers(){
					var form = document.forms[0];
					result="";
					count=form.elements['assignedUsersSelected'].length;
					i=0;
					while (i<count)
					{
						if (result == "")
						result=form.elements['assignedUsersSelected'].options[i].value;
						else
						result=result + "," + form.elements['assignedUsersSelected'].options[i].value;
						i++;
					}
					var url = "searchObjectsToOF.do?assignedUsersSelected=";
					url+= result ;
					form.action = url;
					form.submit();
				}

@Źródło: https://www.developpez.net/forums/d13940/java/developpement-web-java/frameworks-web/struts-1/struts-html-optionscollection-r-cup-ration-donn-es/

I dalej obsługa poprzez request.getParameter("assignedUsersSelected");

edytowany 1x, ostatnio: Badboss
Zobacz pozostałe 5 komentarzy
BA
@Miang, bo się zwolniła :) Projekt jest teraz cały na mojej głowie
Miang
@Badboss: i to jest właśnie ciekawe dlaczego się zwolniła i nikt inny o tym nic nie wie
AK
@Badboss: oczekiwanie automagicznego złączenia zmiennej clientside z serverside ... to nawet nie jest juniorskie - chyba że mam nadmierne oczekiwania od juniorów
BA
Spoko, ale to nie po to jest to forum, żeby sobie pomagać? Druga elektroda robi się z tego forum... Już nie będę o nic pytał.
Miang
@Badboss: chodzi o to ze wrzucili Ci projekt ponad Twoje możliwości i powinieneś męczyć przełożonego nie nas

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.