掲示板
Friendly url e paginazione risultati
10年前 に Fabio De Pra によって更新されました。
Friendly url e paginazione risultati
New Member 投稿: 24 参加年月日: 13/11/04 最新の投稿
Ciao a tutti,
ho un problema con l'utilizzo del paginatore di liferay in combinazione con le friendly url.
In un progetto abbiamo creato diversi portlet e definito le friendly url per accedervi.
Un portlet in particolare si occupa della presentazione dei risultati di una ricerca e abbiamo inserito il paginatore fornito da liferay.
Il portlet di visualizzazione dei risultati mostra i risultati paginati solo che i link per spostarsi sulle pagine non sono compatibili con le friendly url e qundi non è possibile navigare le pagine del risultato (rimanda all'url di default).
Qualcuno ha già affrontato questo problema?
Grazie!
ho un problema con l'utilizzo del paginatore di liferay in combinazione con le friendly url.
In un progetto abbiamo creato diversi portlet e definito le friendly url per accedervi.
Un portlet in particolare si occupa della presentazione dei risultati di una ricerca e abbiamo inserito il paginatore fornito da liferay.
Il portlet di visualizzazione dei risultati mostra i risultati paginati solo che i link per spostarsi sulle pagine non sono compatibili con le friendly url e qundi non è possibile navigare le pagine del risultato (rimanda all'url di default).
Qualcuno ha già affrontato questo problema?
Grazie!
10年前 に Daniele Baggio によって更新されました。
RE: Friendly url e paginazione risultati
Expert 投稿: 336 参加年月日: 08/12/05 最新の投稿
Facci avere il friendly-url-mapper.xml che usi e cerchiamo di capire.
10年前 に Fabio De Pra によって更新されました。
RE: Friendly url e paginazione risultati
New Member 投稿: 24 参加年月日: 13/11/04 最新の投稿
Il codice del mapper è il seguente
L'url "incriminata" è quella list. Ho provato a mettere i parametri presenti nei link dei bottoni avanti/ultimo ma senza successo.
url finale pagina: http://localhost:8080/it/references/-/ref/list/0/0/_/false/true/0
url bottone successivo: http://localhost:8080/it/web/web/references/-/ref/?_referencepage_WAR_productsportlet_delta=2&_referencepage_WAR_productsportlet_keywords=&_referencepage_WAR_productsportlet_advancedSearch=false&_referencepage_WAR_productsportlet_andOperator=true&_referencepage_WAR_productsportlet_resetCur=false&_referencepage_WAR_productsportlet_cur=2
url bottone ultimo: http://localhost:8080/it/web/web/references/-/ref/?_referencepage_WAR_productsportlet_delta=2&_referencepage_WAR_productsportlet_keywords=&_referencepage_WAR_productsportlet_advancedSearch=false&_referencepage_WAR_productsportlet_andOperator=true&_referencepage_WAR_productsportlet_resetCur=false&_referencepage_WAR_productsportlet_cur=3
Cliccando su successivo o ultimo il browser viene reindirizzato a questo indirizzo
http://localhost:8080/it/web/web/references/-/ref/?_referencepage_WAR_productsportlet_delta=2&_referencepage_WAR_productsportlet_keywords=&_referencepage_WAR_productsportlet_advancedSearch=false&_referencepage_WAR_productsportlet_andOperator=true&_referencepage_WAR_productsportlet_resetCur=false&_referencepage_WAR_productsportlet_cur=2
che risulta essere l'url di default
Se può essere utile l'invocazione del portlet avviene attraverso la friendly url in chiaro anziché tramite l'id della portlet.
<!--?xml version="1.0"?-->
<routes>
<route>
<pattern>/cat/{cat_id}/{cat_title}</pattern>
<implicit-parameter name="p_p_lifecycle">1</implicit-parameter>
<implicit-parameter name="javax.portlet.action">getCategoryList</implicit-parameter>
</route>
<route>
<pattern>/list/{delta}/{cur}/{keywords}/{advancedSearch}/{andOperator}/{resetCur}</pattern>
<implicit-parameter name="p_p_lifecycle">1</implicit-parameter>
<implicit-parameter name="javax.portlet.action">getReferenceList</implicit-parameter>
</route>
<route>
<pattern>/{article_id}/{title}</pattern>
<implicit-parameter name="p_p_lifecycle">1</implicit-parameter>
<implicit-parameter name="javax.portlet.action">getViewDetail</implicit-parameter>
</route>
<route>
<pattern>/</pattern>
<implicit-parameter name="p_p_lifecycle">0</implicit-parameter>
</route>
</routes>
L'url "incriminata" è quella list. Ho provato a mettere i parametri presenti nei link dei bottoni avanti/ultimo ma senza successo.
url finale pagina: http://localhost:8080/it/references/-/ref/list/0/0/_/false/true/0
url bottone successivo: http://localhost:8080/it/web/web/references/-/ref/?_referencepage_WAR_productsportlet_delta=2&_referencepage_WAR_productsportlet_keywords=&_referencepage_WAR_productsportlet_advancedSearch=false&_referencepage_WAR_productsportlet_andOperator=true&_referencepage_WAR_productsportlet_resetCur=false&_referencepage_WAR_productsportlet_cur=2
url bottone ultimo: http://localhost:8080/it/web/web/references/-/ref/?_referencepage_WAR_productsportlet_delta=2&_referencepage_WAR_productsportlet_keywords=&_referencepage_WAR_productsportlet_advancedSearch=false&_referencepage_WAR_productsportlet_andOperator=true&_referencepage_WAR_productsportlet_resetCur=false&_referencepage_WAR_productsportlet_cur=3
Cliccando su successivo o ultimo il browser viene reindirizzato a questo indirizzo
http://localhost:8080/it/web/web/references/-/ref/?_referencepage_WAR_productsportlet_delta=2&_referencepage_WAR_productsportlet_keywords=&_referencepage_WAR_productsportlet_advancedSearch=false&_referencepage_WAR_productsportlet_andOperator=true&_referencepage_WAR_productsportlet_resetCur=false&_referencepage_WAR_productsportlet_cur=2
che risulta essere l'url di default
Se può essere utile l'invocazione del portlet avviene attraverso la friendly url in chiaro anziché tramite l'id della portlet.
10年前 に Fabio De Pra によって更新されました。
RE: Friendly url e paginazione risultati
New Member 投稿: 24 参加年月日: 13/11/04 最新の投稿
Ciao a tutti, non vedo i messaggi degli altri utenti.
Come mai?
Come mai?
10年前 に Pier Paolo Ramon によって更新されました。
RE: Friendly url e paginazione risultati
Junior Member 投稿: 90 参加年月日: 10/05/25 最新の投稿
Per i messaggi è un errore nostro non ti preoccupare.
Per il tuo problema, probabilmente è perché quelle sono Render URL, mentre il mapping è per le Action URL. Può essere?
Per il tuo problema, probabilmente è perché quelle sono Render URL, mentre il mapping è per le Action URL. Può essere?
10年前 に Fabio De Pra によって更新されました。
RE: Friendly url e paginazione risultati
New Member 投稿: 24 参加年月日: 13/11/04 最新の投稿
Ciao,
in effetti l'invocazione del portlet avviene tramite un'action che di fatto setta un render parameter.
Il codice è il seguente:
La via corretta è settare direttamente il parametro jspPage nel file friendly-url-routes.xml?
Grazie!
in effetti l'invocazione del portlet avviene tramite un'action che di fatto setta un render parameter.
Il codice è il seguente:
@ProcessAction(name="getReferenceList")
public void viewReferenceList (ActionRequest request, ActionResponse response) throws Exception {
response.setRenderParameter("jspPage", this.searchPageJSP);
}
La via corretta è settare direttamente il parametro jspPage nel file friendly-url-routes.xml?
Grazie!
10年前 に Fabio De Pra によって更新されました。
RE: Friendly url e paginazione risultati
New Member 投稿: 24 参加年月日: 13/11/04 最新の投稿
Ho sistemato un po' di problemi che aveva il portlet in quanto la paginazione non funzionava anche senza friendly url.
Ho ripristinato le friendly url in questo modo
La friendly url incriminata è quella che inizia con list e si occupa di presentare il risultato paginato.
Sembra che ci sia comunque qualche problema in fase di render degli elementi del paginatore.
L'url della pagina di arrivo è corretta
http://localhost:8080/web/web/references/-/ref/list/2/1
Mentre l'url del bottone "Successivo" è
http://localhost:8080/web/web/references/-/ref/list/2/1?_referencepage_WAR_productsportlet_cur=2
Se si prova a modificare l'url della pagina per simulare l'accesso alla pagina successiva
http://localhost:8080/web/web/references/-/ref/list/2/2
il risultato è corretto.
Andando in debug sembra che la jsp portal-web/docroot/html/taglib/ui/page_iterator/start.jsp utilizzata per realizzare i bottoni accodi i parametri all'url originale in formato friendly della pagina corrente
Qualcuno è riuscito a far funzionare un paginatore con friendly url?
Ho ripristinato le friendly url in questo modo
<!--?xml version="1.0"?-->
<routes>
<route>
<pattern>/cat/{cat_id}/{cat_title}</pattern>
<implicit-parameter name="p_p_lifecycle">1</implicit-parameter>
<implicit-parameter name="javax.portlet.action">getCategoryList</implicit-parameter>
</route>
<route>
<pattern>/list/{delta}/{cur}</pattern>
<implicit-parameter name="p_p_lifecycle">1</implicit-parameter>
<implicit-parameter name="javax.portlet.action">getReferenceList</implicit-parameter>
<implicit-parameter name="keywords"></implicit-parameter>
<implicit-parameter name="advancedSearch">false</implicit-parameter>
<implicit-parameter name="resetCur">false</implicit-parameter>
<implicit-parameter name="andOperator">true</implicit-parameter>
</route>
<route>
<pattern>/{article_id}/{title}</pattern>
<implicit-parameter name="p_p_lifecycle">1</implicit-parameter>
<implicit-parameter name="javax.portlet.action">getViewDetail</implicit-parameter>
</route>
<route>
<pattern>/</pattern>
<implicit-parameter name="p_p_lifecycle">0</implicit-parameter>
</route>
</routes>
La friendly url incriminata è quella che inizia con list e si occupa di presentare il risultato paginato.
Sembra che ci sia comunque qualche problema in fase di render degli elementi del paginatore.
L'url della pagina di arrivo è corretta
http://localhost:8080/web/web/references/-/ref/list/2/1
Mentre l'url del bottone "Successivo" è
http://localhost:8080/web/web/references/-/ref/list/2/1?_referencepage_WAR_productsportlet_cur=2
Se si prova a modificare l'url della pagina per simulare l'accesso alla pagina successiva
http://localhost:8080/web/web/references/-/ref/list/2/2
il risultato è corretto.
Andando in debug sembra che la jsp portal-web/docroot/html/taglib/ui/page_iterator/start.jsp utilizzata per realizzare i bottoni accodi i parametri all'url originale in formato friendly della pagina corrente
<li class="<%= (cur != pages) ? " " : "disabled" %>">
<a href="<%= (cur != pages) ? _getHREF(formName, namespace + curParam, cur + 1, jsCall, url, urlAnchor) : " javascript:;" %>" target="<%= target %>">
<c:choose>
<c:when test="<%= type.equals("approximate") || type.equals("more") %>">
<liferay-ui:message key="more" />
</c:when>
<c:otherwise>
<liferay-ui:message key="next" />
</c:otherwise>
</c:choose>
</a>
</li>
Qualcuno è riuscito a far funzionare un paginatore con friendly url?
9年前 に Fabio De Pra によって更新されました。
RE: Friendly url e paginazione risultati
New Member 投稿: 24 参加年月日: 13/11/04 最新の投稿
Ciao,
dopo un po' di debug secondo me il problema è nelle jsp che generano i controlli per la navigazione dei risultati.
Ad esempio la jsp liferay-portal-src-6.2-ce-ga2\portal-web\docroot\html\taglib\ui\page_iterator\start.jsp che genera il bottone per tornare alla prima pagina di risultati.
Il link viene generato direttamente con un a e con il valore dell'attributo href valorizzato con il codice javascript generato dal metodo _getHREF.
che non fa considerazioni sulle friendly url.
Questa secondo me è la spiegazione del perchè i link dei paginatori non vengono convertiti in friendly url.
Per risolvere la cosa ho usato un trucco un po' "sporco" andando a correggere i link dei bottoni di navigazione via javascript in modo da renderli friendly.
dopo un po' di debug secondo me il problema è nelle jsp che generano i controlli per la navigazione dei risultati.
Ad esempio la jsp liferay-portal-src-6.2-ce-ga2\portal-web\docroot\html\taglib\ui\page_iterator\start.jsp che genera il bottone per tornare alla prima pagina di risultati.
<c:if test="<%= type.equals("approximate") || type.equals("more") || type.equals("regular") %>">
<li class="<%= (cur != 1) ? " " : "disabled" %> first">
<a href="<%= (cur != 1) ? _getHREF(formName, namespace + curParam, 1, jsCall, url, urlAnchor) : " javascript:;" %>" target="<%= target %>">
← <liferay-ui:message key="first" />
</a>
</li>
</c:if>
Il link viene generato direttamente con un a e con il valore dell'attributo href valorizzato con il codice javascript generato dal metodo _getHREF.
private String _getHREF(String formName, String curParam, int cur, String jsCall, String url, String urlAnchor) throws Exception {
String href = null;
if (Validator.isNotNull(url)) {
href = HtmlUtil.escape(url + curParam + "=" + cur + urlAnchor);
}
else {
href = "javascript:document." + formName + "." + curParam + ".value = '" + cur + "'; " + jsCall;
}
return href;
}
che non fa considerazioni sulle friendly url.
Questa secondo me è la spiegazione del perchè i link dei paginatori non vengono convertiti in friendly url.
Per risolvere la cosa ho usato un trucco un po' "sporco" andando a correggere i link dei bottoni di navigazione via javascript in modo da renderli friendly.