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:
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:
<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
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:
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ć" ?