cancel
Showing results for 
Search instead for 
Did you mean: 

Java-backed Web Scripts interface utilisateur

michel
Champ in-the-making
Champ in-the-making
Bonjour,

Je suis en trains de voir comment fonctionne les Java-backed Web Scripts et j'ai une petite question:

Comment peut-on renvoyer des données au client (web en général) autrement que via:


res.getWriter().write("les données");

est-il possible d'utiliser une JSP ou quelque chose d'autre pour la présentation (style comme en FTL/javascript)?

Je passe via le java pour une question de performance…

Merci d'avance.

Michel.
24 REPLIES 24

viscere
Champ in-the-making
Champ in-the-making
Bonjour à tous,

      Je viens de m'inscrire sur ce forum à l'instant je m'appelle laurent et je découvre alfresco depuis 1 mois à peine. J'ai quelques peines à implémenter mes premiers webscripts alfresco surtout les java backed web scripts.

      Pour résumer j'ai le même problème que BertrandF ci dessus sauf que je n'ai pas la ligne <format default="">argument</format> dans mon descripteur xml.

Donc j'ai un fichier compas.post.desc.xml :

<webscript>
   <shortname>POST compas bean</shortname>
   <description>Permet de creer une demande</description>
   <url>/ui/compas/bean/compas</url>
   <authentication>guest</authentication>
    <transaction>requiresnew</transaction>
</webscript>

J'ai un retour compas.post.html.ftl tout simple :

<html>
   <body>
   ${mess}
   </body>
</html>

J'ai ma classe java Compas.java qui implémente la classe DeclarativeWebScript :

public class Compas extends DeclarativeWebScript {



    private ServiceRegistry serviceRegistry;

    @Override
    protected Map<String, Object> executeImpl(WebScriptRequest req, WebScriptStatus status) {
       
        Map<String, Object> model = new HashMap<String, Object>();
        model.put("mess", "Traitement java Compas…");
        return model;

    }

    public void setServiceRegistry(ServiceRegistry serviceRegistry) {
        this.serviceRegistry =serviceRegistry;
    }

}

Je suis sur que ma déclaration spring est correcte puisque je rentre dans le code de la fonction "setServiceRegistry".

Malgré tout ca, l'exécution du webscript ne rentre pas dans la fonction executeImpl puisque j'ai une erreur freemarker.core.InvalidReferenceException: Expression mess is undefined.

Merci d'avance pour votre aide.

Laurent

bertrandf
Champ on-the-rise
Champ on-the-rise
Bonjour,

Je suis sur que ma déclaration spring est correcte puisque je rentre dans le code de la fonction "setRenodocServiceRegistry".
Ce n'est pas par ce que l'injection du service se fait correctement que votre déclaration est correcte, il est possible que "l'association" de votre classe Java avec les fichiers de votre webscript (desc.xml, .ftl, …) ne se fasse pas correctement et ce car la nomination de l'identifiant de votre bean spring est primordiale.

Serait-il possible que vous nous montriez votre déclaration spring ainsi que le lieu où se trouve votre webscript (l'arborescence dans alfresco) ?

Cordialement.

viscere
Champ in-the-making
Champ in-the-making
Merci pour la réponse.

Alors ma déclaration Spring se trouve dans le fichier compas-scripts-context.xml :
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>

<beans>
   <!– Add aspect custom action –>

   <bean id="webscript.alfresco.extension.templates.webscripts.compas.bean.compas.post" class="fr.service.Compas" parent="webscript">
      <property name="serviceRegistry">
         <ref bean="ServiceRegistry" />
      </property>
   </bean>
</beans>

Pour résumer le webscript se trouve dans le répertoire alfresco/extension/templates/webscripts/compas/bean
Le descripteur ci dessus dans le répertoire alfresco/extension
Ma classe java dans le package fr.service

bertrandf
Champ on-the-rise
Champ on-the-rise
Pour résumer le webscript se trouve dans le répertoire alfresco/extension/templates/webscripts/compas/bean

Je pense que l'identifiant de votre bean est erroné, essayez avec : webscript.compas.bean.compas.post
<bean id="webscript.compas.bean.compas.post" class="fr.service.Compas" parent="webscript">

</bean>
Cordialement.

viscere
Champ in-the-making
Champ in-the-making
Je te remercie cela venait bien de ca!

Merci encore je vais enfin pouvoir rentrer dans le vif du sujet!

A bientôt!

Laurent