Avatar billede riddlerse Nybegynder
10. juni 2006 - 18:42 Der er 5 kommentarer

JSTL og Portlet tags

Jeg har en løkke der iterere igennem en samling objekter. Dette gøres via JSTL tags som følgende:

<c:forEach items="${entities}" var="entity" varStatus="state">

Jeg smider herefter forskellige properties ud også via JSTL tags således:

<c:out value="${entity.title}"/>

Mit problem er nu, at jeg skal bruge en attribut fra 'entity' objektet i et andet tag, og det kan jeg ikke lure hvordan jeg gør.

Jeg har prøvet:

<portlet:actionURL portletMode="view" windowState="maximized">
<portlet:param name="action" value="show_news"/>
<portlet:param name="news_id" value="${entity.id}"/>
</portlet:actionURL>

Men så får news_id bare værdien "${entity.id}".

Jeg har også prøvet at indsætte <%=entity.getId()%> , men det giver bare en compiler fejl fordi entity ikke findes.

Et desperat forsøg på at indlejre et c:out tag ind i portlet tagget gik naturligvis heller ikke.

Hvad er den korrekte måde at gøre dette på?
Avatar billede arne_v Ekspert
10. juni 2006 - 20:44 #1
bruger du JSP 2.0 ?

(hvordan ser toppen af din web.xml ud ?)
Avatar billede riddlerse Nybegynder
10. juni 2006 - 20:56 #2
Min web.xml ser ud som følgende:

<?xml version="1.0"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

Det er en jsp side der includeres i en portlet. Jeg går ud fra problemet relaterer til portlet tagget (<%@ taglib prefix="portlet" uri="http://java.sun.com/portlet" %>) ikke understøtter ${entity.id}? Men hvad gør man så hvis du vil have fat i entity instancen som er oprettet af JSTL ?
Avatar billede arne_v Ekspert
10. juni 2006 - 21:05 #3
Servlet 2.3 er JSP 1.2 !

Prøv med:

<?xml version="1.0" encoding="UTF-8"?>
<web-app 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" version="2.4">
...
</web-app>
Avatar billede riddlerse Nybegynder
10. juni 2006 - 21:35 #4
Det gav ingen forskel. Men er det bortset fra det ikke portlet containeren der styrer hvad version af jsp der benyttes uanset hvad de enkelte portletter så angiver?
Avatar billede cayman Nybegynder
27. december 2006 - 14:11 #5
Arnes forslag kræver vel at du har en jvm der understøtter det. Kører du java 5?

Ellers vil jeg foreslå at du prøver at skrive

<portlet:param name="news_id" value="<c:out value="${entity.id}"/>"/>

Alt efter tags kan det godt være at den renderer din jstl tag først. Det er ren gætteri :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester