Javascript --> JSP oder Alternative

jazy jaf

Grünschnabel
hi,

in einem dropdown lade ich per jsp gewisse daten aus der db rein.
dabei hat das dropdown ein onchange() attribut und das macht momentan folgendes:

wenn ich ein element aus der dropdown selektiere schreibt mir das javascript dessen id als parameter in die url
diese id kann ich in meinem servlet über request.getAttribute("id"); holen und damit weiterarbeiten... klappt auch alles wunderbar.

jetzt möchte ich diese id aus der dropdown aber nicht mehr als parameter übergeben...dies geschieht momentan wie folgt:

function getEmployeeId(id) {
var ref = "contracts_servicecontract_select_found_employee.do" + "?id=" + id;
window.location.href = ref;
}

jetzt suche ich nach einer lösung um die javascriptfunktion dahingehend zu verändern, das sie mir die id nicht in die url schreibt, sondern direkt meinem servlet zur verfügung stellt.

eine lösung wäre ein hidden field in das ich die id schreibe und den wert dann im servlet auslese, aber folgendes geht da leider ned
function getEmployeeId(id) {
document.forms["addEmployeeAndCreateContractWizardForm"].selectedEmployeeId.value=id;
}

das javascript schreibt die id zwar in das feld...tatsächlich ist diese id aber nur zu "sehen" aber nicht wirklich im quelltext drin (sprcih die value dieses feldes ist "")

es muß eine andere methode geben, um die id vom javascript ans jsp zu übergebn...nur wie?

ich hab gesehn, das man innerhalb von javascript jsp verwenden kann...ich brauche so was änliches, also etwas in der art

function getEmployeeId(id) {
<% request.setAttribute("selectedEmployeeId", %> id <%)%>
}

oder so ähnlich, was auch klappt


greetz
jaf
 
Zuletzt bearbeitet:
leider nein,

in meinem fall ist ein javascript im dropdown nötig, da es in dem form mehrere actions gibt!

das submit am ende ist mal eine action für sich...und in dem onclick des dropdowns wird eine andere action ausgeführt, die mir zu dem selektierten dropdownelement einmal die id in den parameter setzt und zum anderen andere felder im formular anhand dieser action im onclick automatisch ausfüllt.

ich könnte diese extra action auch in die submit action packen...aber es muß eine getrennte action sein, da der benutzer die felder, welche die andere action füllt vorher sehen muß...ist alles bissal kompliziert :/
sonst würde ich LookUpAndDispatchAction benutzen

ich glaub es geht auch nicht anders als so wie ich es mache...sprich parameterübergabe ist hier der einzige weg... :(
 
Original geschrieben von jazy jaf
das submit am ende ist mal eine action für sich...und in dem onclick des dropdowns wird eine andere action ausgeführt, die mir zu dem selektierten dropdownelement einmal die id in den parameter setzt und zum anderen andere felder im formular anhand dieser action im onclick automatisch ausfüllt.

ich könnte diese extra action auch in die submit action packen...aber es muß eine getrennte action sein, da der benutzer die felder, welche die andere action füllt vorher sehen muß...ist alles bissal kompliziert :/
sonst würde ich LookUpAndDispatchAction benutzen

Ok, da du momentan nach besseren und generischeren Ansätzen suchst, will ich dir nahlegen dich mit beans und struts auseinanderzusetzten. Ich kann dir versichern, deine Anwendung wird wesentlich besser strukturiert, es macht viel mehr Spass zu Ändern und zu Erweitern und du lernst dabei auch noch was. Hat man sich einmal an das Konzept gewöhnt, ist es ausserdem auch noch schneller :)

Grüsse TrueSun
 
:)

ich benutrze von anfang an struts :)

hab doch von Action gesprochen (LookupDispatchAction...ist eine struts Klasse), dachte das ist ein struts typisches merkmal (schlagwort MVC )

na ja seit dem post damals bin ich auch schon um einiges weiter gekommen, also das problem ist nicht mehr wirklich ein problem und meine anwendung ist so gut wie fertig

ich benutze u.a. struts und hibernate


aber trotzdem danke :)
 
Ok, sry. Die action eines Formulars kann man ja auch als solche verstehen. :)
Wenn du noch deutlicher beschreibst, was du machen willst, kann ich mir was überlegen.
 
hi :)

es hat sich eigentlich schon alles erledigt...am montag ist präsentation meines praktikums und ich habe eigentlich alles sehr gut hinbekommen, zumal ich davor noch nix mit jsp gemacht hatte - ist echt genial

eine kleinigkeit fällt mir nochein...also:

ich habe auf einer formularseite wiedermal ein dropdown indem man den zustand eines vertrages ändern kann (zustände sind z.B. angelebt, in bearbeitung, aufgelöst, usw...)

auf derselben seite werden mir auch verträge aus der datenbank angezeigt mit ihren momentanen status

das dropdown arbeitet wieder mal mit javasript:
onchange="setNewContractState(this.value)"

die javascript function arbeitet mal wieder mit parametern und setzt mir zu dem ausgewähltenstatus die entsprechende ID als parameter in die url und ruft eine Struts Action danach auf:
window.location.href =set_contract_state.do

und die action wiederum hat als "success" forward path die verträgeseite...

ok, wenn ich ein status nun in der dropdown selektiere, pasiert alles wie ich es definiert habe und der status des vertrages wird auch geändert...allerdings wird der neue status erst angezeigt, wenn ich danach nochmal manuel die verträgeseite aufrufr (also die struts action dafür)
schön wärs, wenn das automatisch geschieht, sonst sieht man nicht sofort, das man den status auch geändert hat
 
Prima, dass du es hinbekommen hast. Zu deinem anderen Problem.

Ich würde das Formular nicht per onchange abschicken. Sondern den User alle Einstellungen machen lassen, wie er meint, per JS evtl Einträge im Formular automatisch selektieren und anschliessend das Formular per submit vom User übertragen lassen. Dann musst du nicht mehr manuell etwas an die Url anhängen. Der User wird nicht überrascht durch eine plötzlich abgeschickte Seite(onchange). Zur Not würde die Seite dann auch ohne JS funktionieren, der User müsste die automatischen Selektionen aber selber durchführen.

Grüsse TrueSun
 
jo das wär natürlich die beste lösung und so wollte ich es auch von anfang an machen...aber leider besteht der "kunde" darauf, das sich der status sofort ändert, wenn er in einem dropdown einen neuen status selektiert. er will nicht erst überall den gewünschten status einstellen un dann am ende erst ein submit button drücken zum ändern :rolleyes:
 
Zurück