IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Taglibs Java Discussion :

DisplayTag et Spring Portlets


Sujet :

Taglibs Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 118
    Points : 47
    Points
    47
    Par défaut DisplayTag et Spring Portlets
    Bonjour à tous

    Je ne sais pas si cette rubrique est la plus appropriée du forum pour résoudre mon problème mais j'essaie quand meme.
    Je cherche à faire fonctionner une portlet contenant un displaytag, sur lequel j'établis des liens vers le détail de chaque ligne. Pour le displaytag, aucune souci. Par contre pour les liens, c'est un autre problème. Je n'arrive pas à faire le lien entre mon controller et ma JSP d'affichage. En fait, plus exactement, je n'arrive pas à obtenir l'URL du détail de ma ligne.

    Je vous poste mon code du controller:

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    public class QuizzDetailController extends AbstractController implements InitializingBean {
     
        private static final String QUIZZ_MODEL = "quizz";
    	private static final String QUIZZ_VIEW = "quizzDetail";
    	private QuizzService quizzService;
     
        public void afterPropertiesSet() throws Exception {
            if (this.quizzService == null)
                throw new IllegalArgumentException("Un service Quizz est nécessaire");
        }
     
    	public ModelAndView handleRenderRequestInternal(RenderRequest request, RenderResponse response) throws Exception {
    	    // get the id and display it
    	   long identifiant = Long.parseLong(request.getParameter("quizz"));
            return new ModelAndView(QUIZZ_VIEW, QUIZZ_MODEL, quizzService.lireQuizz(identifiant));
    	}
     
    	public QuizzService getQuizzService() {
    		return quizzService;
    	}
     
    	public void setQuizzService(QuizzService quizzService) {
    		this.quizzService = quizzService;
    	}
    }

    ainsi que celui de ma JSP:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <%@ include file="/WEB-INF/jsp/include.jsp" %>
    <portlet:defineObjects/>
     
    <display:table name="quizzListe" class="dataTable" pagesize="5" defaultsort="1" defaultorder="descending" decorator="org.displaytag.decorator.TotalTableDecorator">
    	<display:column property="quzTitre" title="Titre" class="titreQuizz" sortable="true" href=" ??? " />
        <display:column property="quzDescriptif" title="Descriptif" class="descriptifQuizz" sortable="true"/>
        <display:column property="dateModification" title="Date modification" class="dateQuizz" sortable="true" decorator="org.displaytag.sample.ShortDateWrapper"/>
    </display:table>
    Si quelqu'un peut me sauver! Merci à tous.

  2. #2
    Membre averti

    Profil pro
    Inscrit en
    Mars 2007
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 392
    Points : 439
    Points
    439
    Par défaut
    en fait, tu voudrais que lorsque l'utilisateur clique sur la ligne de la 1ère colonne (quzTitre), ça affiche le détail du quizz, c'est ça?
    si c'est ça, tu peux faire un décorateur sur ton tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <display:table name="quizzListe" class="dataTable" pagesize="5" defaultsort="1" defaultorder="descending" decorator="monpackage.QuizzWrapper">
    	<display:column property="quzTitre" title="Titre" class="titreQuizz" sortable="true" />
    </display:table>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class QuizzWrapper extends TableDecorator {
    public String getQuzTitre() {
    // récupération du quizz courant
    Quizz quizz = (Quizz ) this.getCurrentRowObject();
    return new StringBuffer().append("<a href=\"").append(tonController).append("?quizz=").append(quizz.getId()).append("\">").append(quizz.getQuzTitre() ).append("</a>").toString();
    }
    }
    un truc dans ce style, non?

  3. #3
    Membre averti

    Profil pro
    Inscrit en
    Mars 2007
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 392
    Points : 439
    Points
    439
    Par défaut
    tu peux jeter un oeil sur displaytag-link
    c'est plus simple que faire un décorateur... surtout si toutes les infos sont dans le bean :
    Struts-like approach

    The column tag provides 5 struts-like attributes that can be set to create a dynamic linke ( href, paramID, paramName, paramProperty, paramScope ). See the display:column documentation, and the struts documentation for a complete description of their usage, but basically:

    href
    the base URL used to construct the dynamic link
    paramId
    the name of the parameter that gets added to the URL specified above
    paramName
    name of the bean that contains the data we want to tack on the the URL (typically null, indicating the current object in the List)
    paramProperty
    property to call on the object specified above to return the value that gets tacked onto the URL.
    paramScope
    specific scope where the databean lives, typically null

    Of these params, you typically would not use paramName and paramScope. Leaving each as null indicates that you want to use the object corresponding to the current row being processed.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <display:table name="sessionScope.details">
      <display:column property="id" title="ID" href="details.jsp" paramId="id" />
      <display:column property="email" href="details.jsp" paramId="action" paramName="testparam" paramScope="request" />
      <display:column property="status" href="details.jsp" paramId="id" paramProperty="id" />
    </display:table>

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 118
    Points : 47
    Points
    47
    Par défaut
    Salut mattheox

    Je te remercie pour tes infos précieuses.
    J'avais testé ta deuxième solution, l'histoire du displaytag-link, mais cela me faisait planter la portlets avec une exception du type "only absolute URLs or full path URIs are allowed". J'imagine qu'il y'a une solution pour pallier à ce problème mais je viens de tester la création du decorator que tu m'a soumise et j'obtiens bien un lien "http:// localhost:8080/pluto/portal/quizzDetail.jsp?quizz=7". Je pense pouvoir obtenir quelque chose avec cela maintenant!

    Merci bien!

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 118
    Points : 47
    Points
    47
    Par défaut
    Apres réflexion, je me suis demandé si je pouvais vraiment exploiter ce lien direct vers ma JSP. J'ai donc tenté une autre opération dont voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <display:table name="quizzListe" id="quizz" class="dataTable" pagesize="5" defaultsort="1" defaultorder="descending" decorator="org.displaytag.decorator.TotalTableDecorator">
    
    <%
    PortletHref phref = new PortletHref(renderRequest, renderResponse);
    phref.setAction(false);
    phref.addParameter("action", "viewDetailQuizz");
    phref.addParameter("id", ??? );
    %>
    	
    	<display:column property="quzTitre" title="Titre" class="titreQuizz" sortable="true" href="<%=phref.toString()%>"/>
        <display:column property="quzDescriptif" title="Descriptif" class="descriptifQuizz" sortable="true"/>
        <display:column property="dateModification" title="Date modification" class="dateQuizz" sortable="true" decorator="org.displaytag.sample.ShortDateWrapper"/>
    </display:table>
    Seulement, je n'arrive pas à obtenir l'ID courant sur lequel je me situe (points d'interrogations) pour le passer en paramètre. Quelqu'un a t'il une idée?

Discussions similaires

  1. [eXo Portal] Spring Portlet passage mode edit à mode view
    Par Gaani dans le forum Portails
    Réponses: 2
    Dernier message: 29/04/2013, 09h41
  2. Réponses: 1
    Dernier message: 18/11/2010, 12h58
  3. [MVC] HelloWorld Spring portlet MVC
    Par Air P-E dans le forum Spring Web
    Réponses: 1
    Dernier message: 11/06/2010, 14h07
  4. [MVC] Fil d'ariane avec Spring Portlet MVC et AbstractWizardFormController
    Par FunkyBreizh dans le forum Spring Web
    Réponses: 0
    Dernier message: 27/04/2010, 16h37
  5. [Spring Portlets] select paramétré+affichage jsp
    Par myriam818 dans le forum Spring Web
    Réponses: 0
    Dernier message: 06/12/2007, 17h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo