Inicio de mvnForum

Imprimir en 24-sep-2023 5:35:38 Ver todos los mensajes del tema en una sola página
Publicado por andresmb en 30-jun-2016 11:24:39
Editar propiedades desde JSP
Hola a todos,

Os pongo en contexto: estoy creando una página padre(productos) con un footer que carga las imágenes de portada de sus hijas (producto1, producto2,...). Para hacerlo, he creado una propiedad "Imagen" a la que le asigno el valor desde la hija con la URL de la imagen y desde la página padre, hago

<c:forEach items="${nav.items}" var="elem" varStatus="status">
<a href="<cms:link>${elem.resourceName}</cms:link>" style="background-image: url('<cms:property name="Imagen" file="${elem.resourceName}index.html"/>');">
<div class="vcenter">
<span>${elem.getProperty('NavText')}</span>
</div>
</a>
</c:forEach>

La pregunta es, ¿hay alguna forma de editar el valor de la propiedad del html desde el formatter "portada.jsp", en luegar de tener que hacerlo manualmente?

Gracias de antemano,

Andrés

Publicado por sergio en 30-jun-2016 12:41:45
Re: Editar propiedades desde JSP
Para editar una propiedad lo puedes hacer desde la api de OpenCms usando la clase: cmsObject. Tienes un método que es writePropertyObject(...) que te permite editar, le dices la ruta, la propiedad y el valor y listo.

Ten en cuenta que tienes que hacerlo con un cmsObject con permisos y en el proyecto offline.
----------------------------------------
---------------------------------------------------
Sergio Rapos Vargas.
Administrador de OpenCmsHispano.
sergio.raposo@opencmshispano.es

Publicado por andresmb en 07-jul-2016 12:04:38
Re: Editar propiedades desde JSP
Gracias por la respuesta Sergio

He estado haciendo pruebas y leyendo documentación y he llegado a esto:

<%
CmsJspActionElement cms = new CmsJspActionElement(pageContext, request, response);
CmsObject cmso = cms.getCmsObject();

CmsProperty property = cmso.readPropertyObject("/opencms/opencms/sites/default/.content/gg-cover/gg-cover-00003.xml", "NavImage", false);

cmso.lockResource("/opencms/opencms/sites/default/.content/gg-cover/");
property.setValue("aquí_vendría_la_ruta", CmsProperty.TYPE_INDIVIDUAL);
cmso.writePropertyObject("/opencms/opencms/sites/default/.content/gg-cover/", property);
cmso.unlockResource("/opencms/opencms/sites/default/.content/gg-cover/");
%>

Pero me dice que:

Container-page element "/.content/gg-cover/gg-cover-00003.xml" could not be rendered with formatter "/system/modules/aero.groundforce.site/formatters/gg-cover-formatter.jsp".

javax.servlet.ServletException: org.opencms.file.CmsVfsResourceNotFoundException: Error reading resource from path "/opencms/opencms/sites/default/.content/gg-cover/gg-cover-00003.xml".Stack trace

Entiendo que el problema está en que no encuentra la ruta, y he pensado en pasarle la variable "content" del formatter, pero no veo cómo

¿Alguna idea?

Gracias de antemano,

Andrés