Toon posts:

[JSTL] Tomcat//Hybris: elementen skinnen

Pagina: 1
Acties:

Onderwerpen


  • Anoniem: 25556
  • Registratie: April 2001
  • Niet online
Ik ben bezig met het refactoren van een bestaande hybris omgeving. (Java/Tomcat/Spring).

Nu zitten daar uiteraard HTML forms in met inputs en dergelijke. De klant wilde 'fancy' inputs, dus heeft men dat gedaan. Zaken als een watermark, een achtergrondplaatje, etc.

Dit hebben ze gedaan door voor elke input overal steeds hetzelfde stuk html code te copy-pasten.

Dat is natuurlijk een hel; als je iets aan een input wil veranderen, moet je alle inputs op gaan zoeken en ze één voor één veranderen.

Dus wilde ik eigenlijk een skin maken, ik kan mij niet voorstellen dat dat niet kan.

Dus dat ik ipv:

code:
1
2
3
4
5
<form:form action="${sessionScope.contextPath}somethingl" method="post" id="someform">
    <div class="myfancyelementskin">
         <input type="text" name="guess" />
    </div>
</form:form>


Iets zou kunnen doen als (ik verzin het maar):

code:
1
2
3
<form:form action="${sessionScope.contextPath}somethingl" method="post" id="someform">
   <form:input skin="myskin" name="guess" type="text">
</form:form>


Zou kunnen doen en hij dan zelf die HTML er omheen zet..

Ik kan mij niet voorstellen dat iets dergelijks niet mogelijk is, alleen ben ik hier niet genog in thuis om te weten hoe.. ook is het lastig googlen hierop als je de terminologie niet kent..

  • Sihaya
  • Registratie: Juni 2001
  • Niet online

Sihaya

Pasfoto:

Misschien kan je proberen de form elementen direct op te maken met css, zonder dat je hiervoor additionele html elementen introduceert.

Anders zou je eventueel kunnen kijken naar een custom tag library. Hiermee kan je zelf tags definiëren waarmee je dan dynamisch de html kunt invoegen.

signature has expired


  • Anoniem: 25556
  • Registratie: April 2001
  • Niet online
De tag library is het antwoord waar ik naar zocht,specifiek natuurlijk dit stuk:
http://java.sun.com/produ...TagLibraries17.html#62595

Nu nog kijken hoe dat dan geimplementeerd moet worden, op die pagina beschijven ze wel het mechanmisme, maar geen concrete zaken, als waar moet die .java staan, hoe zorg ik ervoor dat die compiled wordt. Die .tld lukt wel, de .java inhoudelijk ook wel, de .jsp is er al.. maar nu.. ik zet die .tld op de juiste plek (WEB-INF/tld), ik begrijp dat de .java compiled moet worden naar WEB-INF/classes, maar hoe regel ik dat?

Als iemand een wat meer hands-on tutorial hiervoor weet, hou ik mij aanbevolen.

//edit
ik kwam zelf deze tegen:
http://courses.coreservle.../07-Basic-Custom-Tags.pdf

[Voor 8% gewijzigd door Anoniem: 25556 op 02-07-2011 17:35]


  • Anoniem: 25556
  • Registratie: April 2001
  • Niet online
Ok, inmiddels ben ik wat verder.. uit die PDF begrijp ik dat je voor simpele skin-achtige zaken, beter JSP taglibraries kunt gebruiken. Dat vereenvoudigt het geheel aanmerkelijk, geen .java's, .class of .tld's nodig.

Een werkend prototype heb ik ook al, het concept werkt en is verder helder.

Echter nu loop ik tegen het volgende aan. Ik probeer een bestaand iets over te hevelen naar een tag. Ik zorg ervoor dat die tag alles include wat de oorspronkelijke .jsp ook deed.

Nu deed het systeem iets als ${mijnvariabele.code}.

Dat levert nu in de .tag problemen op, hij kent '.code' niet.

Als ik echter $(mijnvariabele) doe, krijg ik wel dit:

code:
1
[mijnvariabeleData{code='mijncode'}]


Wat mij doet vermoeden dat ik die code wel zou moeten kunnen aanspreken..

Wat doe ik fout?

De melding is:
SEVERE: Servlet.service() for servlet springmvc threw exception javax.el.PropertyNotFoundException: Property 'code' not found on type java.lang.String

Ik begrijp hieruit dat het string type geen code property heeft.. hoe kom ik er achter welk type het dan had moeten zijn, en hoe vertel ik 'm dat?

//edit

ook al opgelost.. ik moest bij de parameter wel opgeven wat het was.. dus ipv:
<%@ attribute name="mijnvariabele" required="true" %>

moest ik dit doen:
<%@ attribute name="mijnvariabele" required="true" type="java.lang.Object" %>

[Voor 9% gewijzigd door Anoniem: 25556 op 02-07-2011 20:18]



Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee