Solución al error de incluir el módulo de comentarios de Alkacon (Alkacon OAMP Comments v1.0 )
Pasos realizados para llegar a encontrarnos con el error:
1. Crear archivo de configuracion de comentarios.
2. Crear mi plantilla, con sus respectivos elementos "head" y "foot", incluyendo entre ambos elementos el fragmento de código que aparece en el PDF:
<!-- COMMENTS START -->
<c:set var="comments"><cms:property name="comments" file="search"/></c:set>
<c:if test="${!empty comments}">
<cms:include file="%(link.weak:/system/modules/com.alkacon.opencms.comments/elements/comment_main.jsp)" >
<cms:param name="cmturi" value="${cms.requestContext.uri}" />
</cms:include>
</c:if>
<!-- COMMENTS END -->
3. Definir propiedad "comments", que contenga la ruta al archivo de configuracion de comentarios.
4. El template y la propiedad "comments" se asignan a un recurso tipo "Pagina con texto libre" (no sé si se pueda con algún otro. Hasta el momento de redactar estas líneas solo he probado con ese)
Uno supone que al seguir estos pasos, tal y cual aparecen en el PDF, todo va a funcionar bien, pero nada es perfecto. Me salía un
java.lang.NullPointerException
(a mí y a muchas personas más..), con una traza de pila similar a esta (algunas llamadas que aparecen allí pueden no ser las mismas):
java.lang.NullPointerException at com.alkacon.opencms.comments.CmsCommentsAccess.getCommentFilter(CmsCommentsAccess.java:911) at com.alkacon.opencms.comments.CmsCommentsAccess.getCountStateComments(CmsCommentsAccess.java:532) at com.alkacon.opencms.comments.CmsCommentsAccess.getPages(CmsCommentsAccess.java:573) at com.alkacon.opencms.comments.CmsCommentsAccess.init(CmsCommentsAccess.java:684) at org.opencms.jsp.CmsJspLoginBean.<init>(CmsJspLoginBean.java:95) at com.alkacon.opencms.comments.CmsCommentsAccess.<init>(CmsCommentsAccess.java:184) at org.apache.jsp.WEB_002dINF.jsp.offline.sites.default_.start.test_jsp._jspService(test_jsp.java:105) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) .....
Buscando y buscando y más, y más, y muchísimo más buscando, me encontré con que el fragmento de código que hay que incluir en la plantilla tiene un error. Por alguna razón, el comando
${cms.requestContext.uri}
no funciona. Hay que reemplazarlo por lo siguiente:
<%
CmsJspActionElement cms = new CmsJspActionElement(pageContext, request, response);
String currentUri = cms.getRequestContext().getUri();
%>
<!-- COMMENTS START -->
<c:set var="comments"><cms:property name="comments" file="search"/></c:set>
<c:if test="${!empty comments}">
<cms:include file="%(link.weak:/system/modules/com.alkacon.opencms.comments/elements/comment_main.jsp)" >
<%--cms:param name="cmturi" value="${cms.requestContext.uri}" /--%>
<cms:param name="cmturi" value="<%= currentUri %>" />
</cms:include>
</c:if>
<!-- COMMENTS END -->
Ivan Herazo