Action Java con acceso al documento

cancel
Showing results for 
Search instead for 
Did you mean: 
showbiz
Active Member

Re: Action Java con acceso al documento

He corregido un error de sintaxis en la declaracion del bean.

Con la siguiente llamada:

<action-listener>#{custodia.executeImpl}</action-listener>

Obtengo otro error diferente:


javax.faces.el.EvaluationException: Exception while invoking expression #{custodia.executeImpl}
caused by:
java.lang.NoSuchMethodException: es.sia.alfresco.action.executer.CustodiaSIAVALActionExecuter.executeImpl(javax.faces.event.ActionEvent)

Que es el mismo que me daba con la solucion que proponia 'dacedos' (definiendo el bean en el fichero faces-config-custom.xml)

¿Por que es necesario que los  metodos a llamar de la clase Java tengan como parámetro un objeto javax.faces.event.ActionEvent?

He estado ojeando el API de esa clase y no he visto que pueda tener acceso al documento a partir de ese objeto.
pjcaracuel_2349
Active Member II

Re: Action Java con acceso al documento

Hola, a ver si te sirve este ejemplo sacado de un libro de desarrollo de ALfresco

Implement the setActive method. It gets called when the UI Action is
invoked. It is passed as an ActionEvent through which you can get the
parameters:
/**
* Action handler called when the enable or disable action is
clicked.
* @param event
*/
public void setActive(ActionEvent event) {
UIActionLink link = (UIActionLink)event.getComponent();
Map<String, String> params = link.getParameterMap();
String id = params.get(PARAM_ID);
String active = params.get(PARAM_ACTIVE);
Boolean activeFlag = Boolean.parseBoolean(active);

Por tanto me imagino que dicho parametro sera el "disparador" de la accion personalizada.

Saludos
showbiz
Active Member

Re: Action Java con acceso al documento

Hola,

muchas gracias por el ejemplo, he visto como acceder a los parámetros que se definen en el action mediante los tags <param>.
En todos los ejemplos que he visto siempre se pasa el mismo parámetro:

<params>
             <param name="id">#{actionContext.id}</param>
</params>

Que corresponde con un identificador de la accion, necesito saber si  el actionContext tiene alguna referencia al documento, ya que en mi accion debería tener acceso al documento. ¿Hay algo de documentacion relacionada con actionContext?

Muchas Gracias
pjcaracuel_2349
Active Member II

Re: Action Java con acceso al documento

Buenas,

Te adjunto un post bastante significativo
http://forums.alfresco.com/en/viewtopic.php?f=9&t=5010

El ContextAction, puede ser el documento,spacio… mismo al que estas aplicando la accion

Saludos
showbiz
Active Member

Re: Action Java con acceso al documento

Gracias por el post Pedro,

pero sigo con problemas para acceder al fichero, por lo que he podido ver en el API, para acceder al InputStream del fichero necesito su url.

He definido la url como parametro:

<param name="url">#{actionContext.properties['cm:url']}</param>

Y luego por codigo obtengo esa url e intento acceder al inputStream a patir de ella


UIActionLink link = (UIActionLink)e.getComponent();      
Map params = link.getParameterMap();
String url = (String)params.get("url");
HttpAlfrescoStore store = new HttpAlfrescoStore();      
ContentReader readerURL = store.getReader(url);
InputStream is =  readerURL.getContentInputStream();

La url tiene valor, su formato es:

workspace/SpacesStore/cf68c25f-458c-4f32-ade3-8d83d97b4ecb/fileIn.txt

pero  obtengo un error al obtener el inputstream a partir de él, como si el fichero no existiese.

¿Alguna idea de como debe ser el formato del URL o de como obtenerlo?

Gracias.
pjcaracuel_2349
Active Member II

Re: Action Java con acceso al documento

Hola,

Una cosa que no me cuadra
La url tiene valor, su formato es:

workspace/SpacesStore/cf68c25f-458c-4f32-ade3-8d83d97b4ecb/fileIn.txt

Creo que no es correcto, la url entiendo que podria ser la siguiente:

workspace/SpacesStore/cf68c25f-458c-4f32-ade3-8d83d97b4ecb

pero la ultima parte (/fileIn.txt) ¿ de donde sale?

Saludos
showbiz
Active Member

Re: Action Java con acceso al documento

Es el nombre del fichero desde el que lanzo la accion
pjcaracuel_2349
Active Member II

Re: Action Java con acceso al documento

Uhmm espera que creo que se me fue la pelota. Esa url es relativa no? no se si eso te valdria, yo cuando quiero acceder a un contenido via url externa, pongo algo asi

http://IP-Alfresco:8080/alfresco/d/d/workspace/SpacesStore/dc20f0e7-5679-467a-92c8-9660addd8372/Proc...

Saludos
pjcaracuel_2349
Active Member II

Re: Action Java con acceso al documento

Por otro lado , no has probado a obtener el ContentReader a partir del FileFolderService
ContentReader getReader(NodeRef nodeRef)

Saludos
showbiz
Active Member

Re: Action Java con acceso al documento

Sí, con un URL de ese tipo yo puedo acceder al documento, pero supongo que tu lo usas para poner enlaces a documentos en otras webs? no? ¿o lo usas como url dentro de un programa java?