2010-12-07 59 views
1

Je veux créer un moteur de template personnalisé comme vitesse ou freemarker qui sera utilisé dans struts 2 application basée sur. Pourquoi je ne veux pas utiliser l'un des moteurs de modèles disponibles est parce que, je veux garder le HMTL fixe et modifiable par dreamweaver signifie pas de balises struts ou JSTL. Les valeurs seront injectées avec Xpath ou un simple remplacement de chaîne de valeurs de balises HTML existantes. J'exige:moteur de template personnalisé pour struts2

HTML brut + une configuration (propriétés/xml) + data =>

HTML avec des données + quelques javascripts générées dynamiquement

+0

Quelle est votre question? –

+0

Comment écrire un moteur de template comme Freemarker? Comment intégrer mon moteur de template avec struts2? –

Répondre

2

1) Définir une package avec le nom de votre type de résultat et la classe qui sera appelée lorsqu'une action renvoie ce type de résultat.

<package name="default" namespace="/" extends="struts-default"> 
    <result-types> 
    <result-type name="myResultType" class="com.awesome.MyResult"/> 
    </result-types> 
    .... actions and other things... 
</package> 

2) Mettre en oeuvre le Struts 2 résultat classe de type:

package com.awesome; 
public class MyResult extends StrutsResultSupport{ 
    //1) read the the target file 
    //2) process/transform the target file 
    //3) write out the transformed file as the result 
} 

Il y a une bonne description de cela dans "l'application web Apache Struts 2 Développement" par Dave Newton. Je sais que la classe ci-dessus n'est pas implémentée mais je parie que vous pouvez trouver ce dont vous avez besoin ici.

+1

Merci, je l'utilise maintenant. Pour les autres, qui souhaitent utiliser cela, je peux vous donner quelques conseils. Ouvrir les segments par défaut Rechercher les intercepteurs implémentant la classe 'FreemarkerResult.java' et' XSLTResult.java' sont deux classes que j'ai lues et qui sont assez simples quant à ce qu'ils font. Je recommande également d'aller à travers http: // www.oracle.com/technetwork/java/filters-137243.html' sur les filtres java, surtout si vous voulez modifier la réponse. HttpResponseWrapper est requis. Une autre chose existe PreResultListener, qui peut manipuler l'objet d'invocation juste avant que le résultat ne soit évalué. –