[Struts/JavaScript] verandering van label

Pagina: 1
Acties:

  • turkosh
  • Registratie: December 2003
  • Laatst online: 26-04-2025
Hoi allemaal,

Ik heb een form waarin de labels van enkele velden gewijzigd moeten worden aan de hand van de geselecteerde optie:
code:
1
2
3
4
<html:select name="formBean" property="type">
        <html:option value="message.promotion.type.testimonial"><bean:message bundle="msg" key="message.promotion.type.testimonial"/></html:option>
        <html:option value="message.promotion.type.activity"><bean:message bundle="msg" key="message.promotion.type.activity"/></html:option>
</html:select>


Als ik bijvoorbeeld 2de optie zou kiezen, dan wil ik de volgende label veranderen, door in select (onchange="MM_changeLabel()") toe te voegen:
code:
1
<bean:message bundle="admin" key="UPIA.EditPromotion.QuoteLabel"/>

die moet dan de waarde key="UPIA.EditPromotion.TextMessageLabel" krijgen. Nou weet ik dat zulke dingen met JavaScript makkelijk te doen zijn, dus dacht ik ik ga het ook doen. Het probleem is dat ik nog niet met JavaScript heb gewerkt.

Ik heb een javascript functie opgezet:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
<script language="JavaScript" type="text/JavaScript">
function MM_changeLabel() {
    var d=document;
    if(d.type == "message.promotion.type.testimonial") {
        d.forms[0].?.value="UPIA.EditPromotion.QuoteLabel";
    }
    if(d.type == "message.promotion.type.activity") {
        d.forms[0].?.value="UPIA.EditPromotion.TextMessageLabel";
    }
}
</script>


Dit werkt natuurlijk niet, omdat ik gebruik maak van <bean:message> zonder enige property eraan toe te kennen. Dus heb ik in de bean message property="label" toegevoegd. En die "?" in de functie ook met label vervangen. Tot nu toe heb ik het niet werken gekregen. Wat moet ik nog aanpassen wil ik de labels dynamisch veranderen?

  • Basszje
  • Registratie: Augustus 2000
  • Laatst online: 29-04 18:32

Basszje

Reisvaap!]

Ik ben niet geweldig thuis in dit soort dingen, maar is Javascript niet gewoon clientside scripting? Je zou het wellicht via JSP kunnen veranderen, maar volgens mij laten labels zich op deze manier niet zo makkelijk veranderen. Eerder zou je het in de Java source moeten aanpassen?

Beware of listening to the imposter; you are undone if you once forget that the fruits of the earth belong to us all, and the earth itself to nobody.


  • turkosh
  • Registratie: December 2003
  • Laatst online: 26-04-2025
Jij hebt gelijk. JavaScript werkt met normale html tags. Struts tiles/tags zijn moeilijker te onderhouden met JavaScript. Dus voor deze kleinigheidje moet ik denk ik meer werk verrichten dan ik had gedacht. :'(

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 29-04 08:14

Janoz

Moderator Devschuur®

!litemod

Dit is een duidelijk client-side vs serverside probleem. Je moet goed beseffen dat javascript pas wordt geinterpreteerd en uitgevoerd als de complete html naar de client gestuurd is. Struts tags en andere serverside dingen hebben tot doel om werkende html op te leveren die vervolgens naar de client worden gestuurd.

Op het moment dat die javascript methode uitgevoerd wordt is die html al lang gemaakt en is de applicatie server al helemaal niet meer bezig met je pagina. Sterker nog, je browser heeft geen idee dat er uberhaupt struts tags gebruikt zijn.

Wat jij moet doen is goed werkende html code opleveren. Jij wilt dat de option aangepast wordt, dan zul je de tekst in die option moeten stoppen. Kijk eens naar het volgende stukje javascript:

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
<script language="JavaScript" type="text/JavaScript">
function MM_changeLabel() {
    var d=document;
    if(d.type == "message.promotion.type.testimonial") {
        d.forms[0].option.value="<bean:message bundle="admin" key="UPIA.EditPromotion.QuoteLabel" />";
    }
    if(d.type == "message.promotion.type.activity") {
        d.forms[0].?.value="<bean:message bundle="admin" key="UPIA.EditPromotion.TextMessageLabel" />";
    }
}
</script>

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'