[JSTL + Struts] <c:out /> werkt niet ?

Pagina: 1
Acties:
  • 454 views sinds 30-01-2008
  • Reageer

  • Ti_Uhl
  • Registratie: Mei 2003
  • Laatst online: 19-09-2012
Ik ben wat aan het testen met struts maar geraak er precies niet meer volledig uit.
Ik heb al op google gezocht wat het probleem zou kunnen zijn maar vind het niet zo gemakkelijk. Het lijkt alsof alles wat in de value staat niet meer word geparsed. En ik ben er toch vrij zeker van dat de syntax juist is.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<%@ taglib uri="/tags/struts-logic" prefix="logic" %>
<%@ taglib uri="/tags/struts-html" prefix="html"  %>
<%@ taglib uri="/tags/jstl-core" prefix="c" %>

<jsp:useBean id="bleh" class="org.test.formBean.TestForm" scope="session" />
<html:html locale="false">
<head>
    <html:base/>
    <title>form test</title>
</head>

<html:form action="test">
<html:text property="name" size="10"/>

<html:submit styleClass="button" value="helloworld"/>
<p/>
<!-- werkt wel -->
<%=bleh.getName() %>
<p/>
<!--  werkt niet -->
<c:out value="${bleh.name}" />
</html:form>
<html:errors/>
</html:html>


ik heb ook in mijn web.xml het volgende gezet :

code:
1
2
3
4
<taglib>
    <taglib-uri>/tags/jstl-core</taglib-uri>
    <taglib-location>/WEB-INF/c.tld</taglib-location>
  </taglib>


volgens mij zou dat genoeg moeten zijn ? of zie ik iets over het hoofd ?

als ik de code run dan krijg ik volgende output van de c:out:

code:
1
${bleh.name}


jstl.jar en standard.jar staan in mijn /lib dir van de webapp en ze werken ook aangezien c:out iets terug geeft, alleen geeft die het juiste niet terug :)

  • bloody
  • Registratie: Juni 1999
  • Laatst online: 21:47

bloody

0.000 KB!!

Zet bovenaan je jsp:
code:
1
<%@ page isELIgnored="false" %>

nope


  • Ti_Uhl
  • Registratie: Mei 2003
  • Laatst online: 19-09-2012
bloody schreef op dinsdag 07 februari 2006 @ 21:30:
Zet bovenaan je jsp:
code:
1
<%@ page isELIgnored="false" %>
Thx het werkt nu, maar kan je ook uitleggen wat het doet ? en kan ik dit in mijn web.xml of in die tld van jstl ergens ook zetten zodat dit globaal ook word gedaan ? ( zodat ik dat niet in elke pagina moet zetten ) :)

  • matthijsln
  • Registratie: Augustus 2002
  • Laatst online: 09-04 14:46
Dit heeft te maken met backwards compatibility. Indien je de versie van je web-app op 2.4 zet (in /WEB-INF/web.xml) is deze directive niet nodig.

Zie hiervoor de JSTL spec appendix A.

  • Ti_Uhl
  • Registratie: Mei 2003
  • Laatst online: 19-09-2012
ah dus eigenlijk word die syntax niet meer gebruikt ?
:) Dat moet ik dan eens nader bekijken.

edit:

anyway heb hem nu op 2.3 gezet aangezien ik geen descriptor heb voor 2.4 en nu werkt het wel perfect :)

[ Voor 40% gewijzigd door Ti_Uhl op 07-02-2006 23:09 ]


  • flowerp
  • Registratie: September 2003
  • Laatst online: 04-02 02:01
Wat hier gebeurd is het feit dat EL heel vroeger nog niet door de container werd uitgevoerd. De Java code die de JSTL tags implementeerd moest het dus zelf doen. De tag handler krijgt dan ook geen objecten binnen, maar gewoon een string. Je gebruikt dus tags in een versie die niet meer zelf de EL parsen en excuten, maar met een container die je vertelt hebt dat ook niet te doen (of je gebruik een hele oude container die het nog niet kon).

taglib-location is btw absoluut niet noodzakelijk om in je web.xml op te nemen. Taglib jars bevatten in de meta-inf directory een .tld file waarin oa eek key staat. De web container leest deze key en registreerd hem. Je kunt nu in je pagina's verwijzen naar de lib door deze key te gebruiken. Vaak zie je dat deze keys precies een web adres zijn (zelfs inclusief http:// ervoor!), maar het is gewoon een key, en kan dus net zo goed "blablaba" zijn oid.

It's shocking to find how many people do not believe they can learn, and how many more believe learning to be difficult.


  • matthijsln
  • Registratie: Augustus 2002
  • Laatst online: 09-04 14:46
Een descriptor voor 2.4 maken is anders niet zo moeilijk hoor. Dit maakt NetBeans ervan:

<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
...
al je huidige config hier
</web-app>
Pagina: 1