Aggiungere un link ad un progetto con archetipo parancoe

12 views
Skip to first unread message

diego.benna

unread,
Aug 10, 2009, 4:08:42 PM8/10/09
to Parancoe-users
Scusate la mia ignoranza ma non conoscendo ancora molto bene JSP e
Parancoe ho problemi a creare un nuovo link da aggiungere.
Ho creato un progetto con achetipo Parancoe e funziona su GlassFish
con db MySql.
Come da reference guide ho costruito la classe Person, il
PersonController e il PersonDao dopo di che ho aggiunto la pagina JSP
che visualizza gli utenti (list.jsp). Nel menu' (menu.jsp) ho aggiunto
un link:

<p class="menuLevel0"><a href="${cp}/person/list.html">list</a></p>

e tutto sembra funzionare.

Ora ho creato una pagina biohtml.jsp (vuota, creata da netbeans) e
l'ho aggiunta sempre nella cartella person (quella di list.jsp). Ho
aggiunto nel menu' il link:

<p class="menuLevel0"><a href="${cp}/person/biohtml.html">bio</a></p>

Quando lancio la mia applicazione web e clicco sul link mi ritorna
sempre la pagina di errore: "HTTP: 404 La pagina cercata non esiste.".
Come e' possibile? Per quale motivo?
Ho provato a creare anche una semplice pagina biohtml.html e creare il
link ma ottengo sempre lo stesso errore.
Potreste per favore darmi un suggerimento su come creare i link con le
pagine JSP? E' da aggiungere qualcosa in qualche file?
Grazie infinite

Diego

Enrico Giurin

unread,
Aug 10, 2009, 4:51:19 PM8/10/09
to paranco...@googlegroups.com
Ciao Diego,
intanto benvenuto nel mondo di parancoe.

Allora circa il tuo problema, forse ho capito male, ma tu hai messo la
tua jsp nella cartella /WEB-INF/jsp e hai creato un link per
raggiungerla direttamente.
Ora dai miei vaghi ricordi della certificazione SCWCD (ovvero web
developer) le jsp che vengono messe nella cartella WEB-INF/jsp non
sono raggiungibili dall' esterno ma possono essere solo raggiunte da
un controller interno...ok l'affermazione è grossolana, non ricordo i
termini esatti, ma di sicuro non la puoi raggiungere da un link ad
un'altra pagina jsp.

Prova per curiosità a spostare la tua jsp direttamente nella webapp e
vedrai che è raggiungibile-

Spero di averti aiutato,
ciao,
enrico.


2009/8/10 diego.benna <diego...@gmail.com>:

Diego Benna

unread,
Aug 11, 2009, 5:55:56 AM8/11/09
to paranco...@googlegroups.com
Ciao Enrico e grazie per aver risposto,
problema: tutte le pagine si trovano in WEB-INF/jsp

non capisco perche', ma seguendo la reference guide e creando il file WEB-INF/jsp/person/list.jsp (compresa la classe Person, il Dao e il PersonController) va tutto bene con il link da menu.jsp che si trova in WEB-INF/jsp

<p class="menuLevel0"><a href="${cp}/person/list.html">list</a></p> (ma perche' estensione html? tutte le jsp vengono convertite in html? pero' tanti URL in internet sono .jsp)

se aggiungo poi un file bio.jsp in person, non lo raggiunge. E non riesco nemmeno a raggiungerlo neanche dallo stesso file list.jsp che si trova nella stessa cartella.

file list.jsp

<%@ include file="../common.jspf" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <%@ include file="../head.jspf" %>
    </head>
    <body>
        <div id="nonFooter">
            <jsp:include page="../header.jsp"/>
            <div id="content">
                <div id="content_main">
                    <h1>People</h1>
                    <table>
                        <c:forEach var="person" items="${people}">
                            <tr>
                                <td>${person.firstName}</td>
                                <td>${person.lastName}</td>
                                <td>${person.birthDate}</td>
                                <td>
                                    <a href="edit.form?id=${person.id}">Edit</a>
                                    <a href="delete.html?id=${person.id}">Delete</a>
                                </td>
                            </tr>
                        </c:forEach>
                    </table>
                    <c:if test="${empty people}">
                        No people in the DB
                    </c:if>
                    <a href="create.html">New</a>
                    <a href="${cp}/person/bio.jsp">list</a>
                    <a href="${cp}/person/bio.html">list</a>
                    <a href="bio.jsp">list</a>
                    <a href="bio.html">list</a>
                </div>
                <jsp:include page="../menu.jsp"/>
            </div>
        </div>
        <jsp:include page="../footer.jsp"/>
    </body>
</html>

(in PersonController c'e' una riga : public static final String LIST_VIEW = "person/list";
ha a che fare con il file list.jsp? a cosa servono i controller?)

nessuno di questi link di list.jsp unziona (ritornano la pagina di errore 404 di parancoe):

<a href="${cp}/person/bio.jsp">list</a>
<a href="${cp}/person/bio.html">list</a>
<a href="bio.jsp">list</a>
<a href="bio.html">list</a>

non capisco proprio il motivo. Soprattutto non capisco come mai la pagina list.jsp sia invece raggiungibile senza errori dal menu.jsp che si trova in WEB-INF/jsp.

Il mio file bio.jsp e' semplicemente questo: (ho provato anche a sostituire il codice con quello di list.jsp, ma niente)

<%-- 
    Document   : bio
    Created on : 11-ago-2009, 11:24:51
    Author     : Diego
--%>

<%@page contentType="text/html" pageEncoding="windows-1252"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>Hello World!</h1>
    </body>
</html>



Ho notato che nella cartella Web Pages (che contiene WEB-INF) c'e' index.jsp con questo codice:

<jsp:forward page="/home/welcome.html"/>

ma la cartella home corrisponde a WEB-INF/jsp? dove effettivamente in WEB-INF/jsp c'e' welcome.jsp.

 Ho provato a mettere i file direttamente nella cartella WEB-INF. e ho modificato la riga di index in
<jsp:forward page="/bio.html"/> e anche in <jsp:forward page="bio.html"/>

1. spostando il file bio.jsp in WEB-INF mi da' cmq errore 404
2. creando un file bio.html in WEB-INF mi da' cmq errore 404

Ho anche provato a mettere bio.jsp nella cartella di welcome.jsp e a cambiare la riga di index.jsp semplicemente con:
<jsp:forward page="/home/bio.html"/> ma niente da fare..

Arg .. sono abbastanza disperato!

Spero di essere stato un po' piu' chiaro

Grazie


Diego

Lucio Benfante

unread,
Aug 11, 2009, 10:36:48 AM8/11/09
to paranco...@googlegroups.com
Diego Benna ha scritto:

> Ciao Enrico e grazie per aver risposto,
> problema: tutte le pagine si trovano in WEB-INF/jsp
>
> non capisco perche', ma seguendo la reference guide e creando il file
> WEB-INF/jsp/person/list.jsp (compresa la classe Person, il Dao e il
> PersonController) va tutto bene con il link da menu.jsp che si trova
> in WEB-INF/jsp
>
> <p class="menuLevel0"><a href="${cp}/person/list.html">list</a></p>
> (ma perche' estensione html? tutte le jsp vengono convertite in html?
> pero' tanti URL in internet sono .jsp)

Ciao Diego,
quello non è l'URL della JSP, è l'URL mappato sul controller. E' il
controller che dopo usa la JSP come sua vista: la JSP non è mai invocata
direttamente (e dovrebbbero essere rari i casi in cui dovrebbe esserlo).

>
> se aggiungo poi un file bio.jsp in person, non lo raggiunge. E non
> riesco nemmeno a raggiungerlo neanche dallo stesso file list.jsp che
> si trova nella stessa cartella.

Come ti ha detto Enrico, se vuoi invocare direttamente una JSP, devi
metterla nella root della webapp.

Altrimenti il giro normale è controller->JSP.

Ciao
Lucio

--
Lucio Benfante
JUG Padova http://www.parancoe.org ...have a look at it!
www.jugpadova.it http://www.jugevents.org


Reply all
Reply to author
Forward
0 new messages