2010-11-03 12 views
1

J'utilise un code qui fonctionne très bien, mais voici les derniers scriptlets dans mon jsp:problème jstl: 2 derniers scriptlet pour enlever de mon jsp

<% List listMillesime= MultiMillesimeFactory.getInstance().getListMillesimeActif(); 
    pageContext.setAttribute("listMillesime",listMillesime); 
    %> 
... 
<c:forEach var="millesime" items="${listMillesime}"> 
... 
</c:forEach> 

Voici la déclaration d'usine:

public class MultiMillesimeFactory { 

    private static MultiMillesime multiMillesime; 

    private MultiMillesimeFactory(){ 
    } 

    public static MultiMillesime getInstance() { 
     if (multiMillesime == null) { 
      multiMillesime = new MultiMillesime(); 
     } 
     return multiMillesime; 
    } 
} 

Multimillesime est une classe standard avec une méthode getListMillesimeActif renvoyant une liste. Déclaration:

public class MultiMillesime { 
... 
    public List getListMillesimeActif() throws Exception { 
    List _l = Collections.synchronizedList(new LinkedList()); 
... 
    return _l; 
    } 
} 

c: pour chaque fonctionne très bien sur la liste et ENUM, mais ici le problème vient de l'utilisation du getInstance, j'ai essayé MultiMillesimeFactory.Instance.ListMillesimeActif sans succès.

Et la dernière scriptlet est:

<a href='<%=request.getContextPath() %> 

Je ne suis pas sûr que ces deux sont amovibles.

Répondre

3

Vous pouvez remplacer le <%=request.getContextPath() %> scriptlet avec une étiquette JSTL:

<a href="${pageContext.request.contextPath}" /> 

Il est pas rare de voir quelque chose comme ça, soit:

<c:set var="ctx" value="${pageContext.request.contextPath}"/> 
... 
<a href="${ctx}" /> 

En ce qui concerne la question avec le MultiMillesimeFactory: il On dirait que c'est une classe dans votre base de code, et nous ne pouvons pas déboguer ce problème par magie pour vous. Cela ne ressemble pas à un problème JSP.

Que signifie "essayé MultiMillesimeFactory.Instance.ListMillesimeActif sans succès"?


Edit: Re: Votre commentaire: Je ne suis pas sûr que je comprends ce que tu veux dire, mais je suppose que le problème est que vous devez utiliser le nom complet de la classe de MultiMillesimeFactory pour le regarder bien. Cependant, vous devriez vraiment éviter d'utiliser les scriptlets autant que possible. Au lieu de cela, utilisez un servlet approprié pour injecter le ListMillesimeActif dans la demande, comme ceci:

public class MyServlet extends HttpServlet implements Servlet 
{ 
    //... 

    @Override 
    public void doGet(HttpServletRequest request, HttpServletResponse response) 
    { 
     //... 
     List listMillesime = MultiMillesimeFactory.getInstance().getListMillesimeActif(); 
     request.setAttribute("millesime", listMillesime); 
     //... 
    } 

    //... 
} 
+0

essayé MultiMillesimeFactory.Instance.ListMillesimeActif sans succès: Cela signifie que généralement jstl « trouver » la méthode qui ressemble à un getter pour un attribut ou un pseudo attribut. En effet, je suis sûr à 95% que A.ListMillesimeActif trouve la méthode A.getListMillesimeActif(), même si ListMillesimeActif n'est pas un attribut de classe A mais juste une méthode. J'ai essayé la même chose pour getInstance et je pense que c'est la clé de mon problème. – jayjaypg22

+0

@jayjay: voir ma modification. Je ne suis toujours pas clair sur exactement ce qui est "pas réussi" - obtenez-vous une erreur de compilateur? NullPointerException? –

+0

pas une liste vide dans mon jsp, mais votre solution avec cette liste en paramètre doit être bonne. Je vais essayer, puis fermer ce sujet – jayjaypg22