[JSP] <c:out> in een <div> gebruiken ?

Pagina: 1
Acties:

  • rvrbtcpt
  • Registratie: November 2000
  • Laatst online: 15:13
Ondertussen heb ik al flink wat met Google gezocht maar nog niet kunnen vinden hoe ik het volgende aan de praat krijg.

Afhankelijk van een variabele wil ik een bepaalde class name in mijn <div> gebruiken:

Java Server Page:
1
<div id='webshop' class='<c:out value="${BarColorClass}"/>'>


De variabele bevat gewoon een naam.
Telkens krijg ik deze foutmelding:

The value of attribute "class" associated with an element type "div" must not contain the '<' character.

Java Server Page:
1
<div id='webshop class='${BarColorClass}'/>


Werkt ook niet.
Ondertussen heb ik het ook al met javascript geprobeerd maar er moet toch een simpele manier zijn om dit op te lossen?

De hele <div ... > in een variabele zetten en die met <c:out/> afdrukken werkt ook niet want dan komt de </div> in het gedrang en krijg je daar een foutmelding op.

Wie heeft er een goed idee?

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 09:03

Janoz

Moderator Devschuur®

!litemod

Waarvan krijg je die foutmelding? Ikzelf vind het nogal vreemd. Ik gebruik nog niet de STL, maar nog gewoon de oude struts varianten, maar ik heb al vaak genoeg vergelijkbare constructies gebruikt.

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


  • rvrbtcpt
  • Registratie: November 2000
  • Laatst online: 15:13
Tomcat 5.0 geeft de melding wanneer deze mijn webapp uitvoert.

Ik snap wel dat er geen < in een class="" definitie mag staan maar je zou toch verwachten dat die <c:out/> wordt uitgevoerd voor de rest van de pagina zodat die waarde erin komt te staan.

Met <![CDATA[ heb ik ook al zitten proberen maar daarmee krijg ik het ook niet aan de praat.

[ Voor 75% gewijzigd door rvrbtcpt op 17-10-2005 15:36 ]


  • LAN
  • Registratie: Oktober 2000
  • Niet online

LAN

En als je de quotes en dubbelquotes eens omdraait?

<div id="webshop" class="<c:out value='${BarColorClass}'/>">

Ik weet niet zeker of dat dat uitmaakt, maar zo gebruik ik het nl en dat werkt wel.

edit:
Het kan ook zijn dat hij je EL helemaal niet evalueert en daarom de jstl tag als tekst ziet.
Je hebt jstl op de juiste manier als taglib ingesteld?

[ Voor 37% gewijzigd door LAN op 17-10-2005 16:26 ]


  • bodiam
  • Registratie: December 2001
  • Laatst online: 31-12-2024
Frijns.Net schreef op maandag 17 oktober 2005 @ 15:34:
Tomcat 5.0 geeft de melding wanneer deze mijn webapp uitvoert.
Ik kan me niet voorstellen dat Tomcat 5, of welke Tomcat dan ook, waarschuwingen of foutberichten gaat geven over het gebruik van je HTML, en zeker niet over het gebruik van een class in een div. Mijn gok is daarom dan ook dat Tomcat denkt dat de class onderdeel is van je EL en ook ge-evalueerd moet worden. Ik kan het misschien verkeerd hebben, maar het zou schelen als je je complete JSP eens wilt posten?

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 09:03

Janoz

Moderator Devschuur®

!litemod

Daar ben ik ook wel benieuwd naar, maar dan vooral vanwege de opmerking:
De hele <div ... > in een variabele zetten en die met <c:out/> afdrukken werkt ook niet want dan komt de </div> in het gedrang en krijg je daar een foutmelding op.

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


  • dlmh
  • Registratie: Januari 2000
  • Laatst online: 27-04 09:25

dlmh

Lo-Fi

Wat doet dit (beetje omslachtig):

code:
1
2
3
<c:set var="bcc" scope="session"><c:out value="${BarColorClass}" /></c:set>
<% String bcc=(String)request.getSession().getAttribute("bcc"); %>
<div id='webshop' class='<%=bcc%>'>


Trouwens: heb je
code:
1
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
dit er wel in staan? Anders parst ie die tag niet maar leest ie 't gewoon als tekst!

[ Voor 44% gewijzigd door dlmh op 17-10-2005 16:48 ]

“If a cluttered desk is a sign of a cluttered mind, of what, then, is an empty desk a sign?” - Albert Einstein


  • rvrbtcpt
  • Registratie: November 2000
  • Laatst online: 15:13
Bedankt voor de reacties.

Ondertussen werkt het op deze manier ook:

<![CDATA[<div id="webshop" class="productGroepen ]]><c:out value="${BarColorClass}"/><![CDATA[">]]>


<![CDATA[</div>]]>


Had het idee al dat het iets met CDATA moest zijn maar kon er niet echt op komen.

@SerialThrillaZ

Als je als scope session gebruikt dan wordt die waarde in de sessie gezet neem ik aan en er niet meer uit gehaald zolang als de sessie geldig is?

[ Voor 34% gewijzigd door rvrbtcpt op 17-10-2005 17:49 ]


Verwijderd

wat is er eigenlijk mis met:

<div id="webshop" class="${BarColorClass}">
edit: daar moet je een bepaalde property voor aanzetten waar nu even de naam niet van te binnen schiet.

tevens kun je ook je taglib xhtml compliant aangeven:
<html xmlns:c="http://etc...." > ... </html>

[ Voor 34% gewijzigd door Verwijderd op 17-10-2005 17:54 ]


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Frijns.Net:
Bedankt voor de reacties.

Ondertussen werkt het op deze manier ook:

<![CDATA[<div id="webshop" class="productGroepen ]]><c:out value="${BarColorClass}"/><![CDATA[">]]>
Ik kan me slecht voorstellen dat dat de mooiste werkende manier is. Heeft JSP (of de taglib die je gebruikt) niet iets vergelijkbaars als een xsl:attribute? Je probleem heeft namelijk wel iets weg van 't volgende in XSLT:
XML:
1
2
3
<div id="webshop">
   <xsl:attribute name="class">productGroepen <xsl:value-of select="BarColorClass" /></xsl:attribute>
</div>

[ Voor 15% gewijzigd door drm op 17-10-2005 17:59 ]

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • WouZz
  • Registratie: Mei 2000
  • Niet online

WouZz

Elvis is alive!

Frijns.Net schreef op maandag 17 oktober 2005 @ 15:14:
...
Java Server Page:
1
<div id='webshop class='${BarColorClass}'/>

Werkt ook niet.
...
Wie heeft er een goed idee?
Ik denk dat je gewoon valid XML moet schrijven en dus beter geen komma's moet vergeten..

On track


  • dlmh
  • Registratie: Januari 2000
  • Laatst online: 27-04 09:25

dlmh

Lo-Fi

Frijns.Net schreef op maandag 17 oktober 2005 @ 17:45:@SerialThrillaZ

Als je als scope session gebruikt dan wordt die waarde in de sessie gezet neem ik aan en er niet meer uit gehaald zolang als de sessie geldig is?
Je mag de scope van mij ook op request zetten, zolang de variable maar in JSP ergens vandaan gehaald kan worden. Waar vandaan maakt mij natuurlijk niet uit ;).
Ik vind die CDATA oplossing ook maar 'n beetje ranzig. Tag-nesting van JSTL moet wel kunnen, zolang de open tag maar afgesloten is. Dus :
code:
1
<c:set><c:out /></c:set>

JSTL-tags binnen een HTML tag kan wel weer (omdat de ene client-side wordt geparsed en de andere server-side). Dus:
code:
1
<a class='<c:out value="${waarde}" />' />Linkje</a>
moet gewoon kunnen. (dus ik vermoed dat er iets fout gaat met importeren van de library...).

“If a cluttered desk is a sign of a cluttered mind, of what, then, is an empty desk a sign?” - Albert Einstein


Verwijderd

Hier een standaard stukje pagina voor jsp2.0 containers. Geen taglibs definities in je web.xml knallen, enkel de laatste standard.jar (jstl lib van jakarta site) in een van jou lib folders knallen. Succes
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version='1.0' encoding='utf-8'?>
<html xmlns="http://www.w3c.org/1999/xhtml" 
    xmlns:jsp="http://java.sun.com/JSP/Page"
    xmlns:c="http://java.sun.com/jstl/core"
    xml:lang="en" lang="en">
    <jsp:output doctype-root-element="html" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
        doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
    <jsp:directive.page language="java" pageEncoding="utf-8" contentType="text/html;charset=utf-8"/>
    <head>  
        
    </head>
    <body>  
        <div id="webshop" class="${BarColorClass}" />
    </body>
</html>

[ Voor 18% gewijzigd door Verwijderd op 17-10-2005 20:18 ]

Pagina: 1