Web script con búsqueda simple

Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-06-2009 08:36 AM
Hola, estoy intentando hacer un simple ejemplo de búsqueda de documentos con un web script.
Simplemente quiero buscar por nombre y autor, y listar los documentos encontrados. Primero pongo el código y luego expongo mis problemas…
busquedapersonalizada.get.desc.xml
Si ven algo horrible, como dijo H. Simpson "fue mi primer día" con web scripts
Lista de problemas:
1. Si hago la llamada sin parámetros en la URL (http://localhost:8080/alfresco/service/busquedapersonalizada) me salta un bonito error 500 con la siguiente info:
La línea maldita es "<tr><td>Nombre:</td><td>${args.nombre}</td></tr>", y no sé por qué entra en esa línea del ftl si sólo debería entrar ahí cuando está definido "resultados", cosa que creo que no debería pasar según el JavaScript.
2. Si hago la llamada de tal forma que devuelva resultados (pasando "a" tanto en nombre como en autor) tengo este otro error:
No sé por qué da ese error, si la propiedad cm:name es propia de todos los documentos…
Muchas gracias por vuestra ayuda.
Simplemente quiero buscar por nombre y autor, y listar los documentos encontrados. Primero pongo el código y luego expongo mis problemas…
busquedapersonalizada.get.desc.xml
<webscript> <shortname>Busqueda personalizada</shortname> <description>Realiza una busqueda en el repositorio</description> <url>/busquedapersonalizada</url> <url>/busquedapersonalizada?nombre={nombre?}&autor={autor?}</url> <authentication>user</authentication></webscript>
busquedapersonalizada.get.jslogger.log("nombre: \"" + args.nombre + "\"");logger.log("autor: \"" + args.autor + "\"");if (args.autor != "" || args.nombre != "") { var queryBusqueda = "(PATH:\"/app:company_home//*\" )"; if (args.autor != "") queryBusqueda += " AND (@cm\\:author:" + args.autor + ")"; if (args.nombre != "") queryBusqueda += " AND (@cm\\:name:" + args.nombre + ")"; var resultados = search.luceneSearch(queryBusqueda); if (resultados == null) resultados = new Array(0); model.resultados = resultados;}
busquedapersonalizada.get.html.ftl<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>Prototipo de búsqueda</title> </head> <body> <p> <a href="http://www.alfresco.com" target="_blank"><img src="${url.context}/images/logo/AlfrescoLogo32.png" alt="Alfresco" /></a> </p> <h1>Búsqueda de documentos</h1> <form method="get" action="http://localhost:8080/alfresco/service/busquedapersonalizada"> <table> <tbody> <tr><td>Nombre</td><td><input type="text" size="20" maxlength="20" name="nombre" /></td></tr> <tr><td>Autor</td><td><input type="text" size="20" maxlength="20" name="autor" /></td></tr> </tbody> <tfoot> <tr><th colspan="2" align="left"><input type="submit" value="Buscar" /></th></tr> </tfoot> </table> </form> <#if resultados??> <p>Parámetros de búsqueda:<p> <table> <tr><td>Nombre:</td><td>${args.nombre}</td></tr> <tr><td>Autor:</td><td>${args.autor}</td></tr> </table> <br /> <table> <#if (resultados?size > 0)> <thead> <tr><th>Nombre documento</th><th>Tipo documento</th><th>Autor documento</th></tr> </thead> <tbody> <#list resultados as child> <tr><td>${message(child.properties["cm:name"])}</td><td>${message(child.properties["cm:type"])}</td><td>${message(child.properties["cm:author"])}</td></tr> </#list> </tbody> </#if> <tfoot> <tr><th align="left" colspan="2">Total resultados:</th><td>${resultados?size}</td></tr> </tfoot> </table> </#if> </body></html>
Si ven algo horrible, como dijo H. Simpson "fue mi primer día" con web scripts

Lista de problemas:
1. Si hago la llamada sin parámetros en la URL (http://localhost:8080/alfresco/service/busquedapersonalizada) me salta un bonito error 500 con la siguiente info:
freemarker.core.InvalidReferenceException - Expression args.nombre is undefined on line 29, column 51 in busquedapersonalizada.get.html.ftl.
La línea maldita es "<tr><td>Nombre:</td><td>${args.nombre}</td></tr>", y no sé por qué entra en esa línea del ftl si sólo debería entrar ahí cuando está definido "resultados", cosa que creo que no debería pasar según el JavaScript.
2. Si hago la llamada de tal forma que devuelva resultados (pasando "a" tanto en nombre como en autor) tengo este otro error:
freemarker.core.InvalidReferenceException - Expression message(child.properties["cm:name"]) is undefined on line 39, column 43 in busquedapersonalizada.get.html.ftl.
No sé por qué da ese error, si la propiedad cm:name es propia de todos los documentos…
Muchas gracias por vuestra ayuda.
Labels:
- Labels:
-
Archive
2 REPLIES 2

Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-09-2009 05:42 AM
No sé si le has echado un ojo a esto, supongo que sí:
WebScripts - Blog Search
Como ves para listar el resultado hace lo siguiente:
Para la 2ª pregunta, con poner ${node.name} y para el autor ${node.properties.creator}
Para la 1ª pregunta, te casca, porque supongo que si no le pasas los parámetros te los coge como no definidos… En el mismo post un poco más abajo, WebScripts - Argument Handling, te pone como manejar los argumentos.
Echate un ojo a los links que te he mandado.
Saludos y suerte con tu desarrollo!
WebScripts - Blog Search
Como ves para listar el resultado hace lo siguiente:
<#list resultset as node> <tr> <td><img src="${url.context}${node.icon16}"/> <td><a href="${url.serviceContext}/api/node/content/${node.nodeRef.storeRef.protocol}/${node.nodeRef.storeRef.identifier}/${node.nodeRef.id}/${node.name?url}">${node.name}</a> </tr></#list>
Para la 2ª pregunta, con poner ${node.name} y para el autor ${node.properties.creator}
Para la 1ª pregunta, te casca, porque supongo que si no le pasas los parámetros te los coge como no definidos… En el mismo post un poco más abajo, WebScripts - Argument Handling, te pone como manejar los argumentos.
Echate un ojo a los links que te he mandado.
Saludos y suerte con tu desarrollo!

Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-09-2009 07:29 AM
Muchas gracias por tu ayuda, los 2 links me han parecido muy interesantes.
Nos vemos!
Nos vemos!
