Principes d'intégration des vues
Déclaration d'une nouvelle vue
- Créer la jsp de la vue
- Créer un viewModel hériant de AbstractViewModel qui contient les données de la vue
public class MyViewModel extends AbstractViewModel {
...
}
- Créer un viewPreparer qui hérite de AbstractViewPreparer
- Implémenter la méthode accept, pour définir le contexte d'utilisation de la vue
- Implémenter la methode prepare, pour injecter les données dans le modèle
import com.kosmos.context.front.FrontContext;
public class MyViewPreparer<V extends MyViewModel> extends AbstractViewPreparer<V> {
@Override
public boolean accept(FrontContext context) {
...
}
@Override
public V prepare(FrontContext context, final Map<String, List<IViewPreparer>> preparers) {
final V viewModel = super.prepare(context, preparers);
...
return viewModel;
}
}
}
- Déclarer le bean du viewPreparer en spécifiant
- Le type de vue
- Le chemin vers la jsp de la vue
- Son ordre
- Les types des sous-vues composant la vue
- Les templates de site à inclure/exclure
<bean id="myViewPreparer" class="com.kosmos.preparer.MyViewPreparer">
<property name="type" value="myViewType" />
<property name="view" value="/WEB-INF/jsp/myView.jsp" />
<property name="order" value="1000" />
<property name="expectedViewTypes">
<list>
...
</list>
</property>
<property name="includedSiteTemplate">
<list>
...
</list>
</property>
<property name="excludedSiteTemplate">
<list>
...
</list>
</property>
</bean>
Retrait d'un code de template site dans les listes includedSiteTemplate/excludedSiteTemplate d'une vue produit
- Effectuer un AttributeToOverrideBean pour modifier les listes includedSiteTemplate/excludedSiteTemplate
<bean id="myArticleViewPreparer" class="com.kportal.core.context.AttributeToOverrideBean">
<property name="idExtensionToMerge" value="article"/>
<property name="idBeanToMerge" value="articleViewPreparer"/>
<property name="attributes">
<map>
<entry key="includedSiteTemplate">
<list>
...
</list>
</entry>
<entry key="excludedSiteTemplate">
<list>
...
</list>
</entry>
</map>
</property>
</bean>
Ajout d'un code de template site dans les listes includedSiteTemplate/excludedSiteTemplate d'une vue
- Effectuer un ListToAddBean pour ajouter les codes désirés dans les listes includedSiteTemplate/excludedSiteTemplate
<bean id="myArticleViewPreparer" class="com.kportal.core.context.ListToAddBean">
<property name="idBeanToMerge" value="articleViewPreparer"/>
<property name="idBeanToMerge" value="articleViewPreparer"/>
<property name="listToMerge" value="includedSiteTemplate"/>
<property name="add">
<list>
<value>template1</value>
</list>
</property>
</bean>
Modification de l'ordre de priorité d'une vue
- Effectuer un AttributeToOverrideBean pour modifier l'attribut order sur le viewPreparer
<bean id="myArticleViewPreparer" class="com.kportal.core.context.AttributeToOverrideBean">
<property name="idExtensionToMerge" value="article"/>
<property name="idBeanToMerge" value="articleViewPreparer"/>
<property name="attributes">
<map>
<entry key="order">
<value>2000</value>
</entry>
</map>
</property>
</bean>
Surcharge d'une vue pour modifier son affichage
Création d'une jsp sur le projet avec le même chemin et nom que la jsp à surcharger.
OU
Création d'une nouvelle jsp et modification du chemin de la vue dans le viewPreparer via AttributeToOverrideBean.
Surcharge d'une vue pour modifier le contenu du modèle
- Création d'un nouveau viewPreparer qui étend le viewPreparer de la vue à surcharger
- Override de la méthode prepare pour changer la construction du modèle
- Déclaration du viewPreparer avec un order prioritaire au viewPreparer surchargé
Surcharge d'une vue pour modifier la structure du modèle
La modification de la structure du modèle implique la modification de tous les éléments de la vue (jsp, preparer, model). Cela implique donc de créer une nouvelle vue possédant la même méthode accept que la vue à surcharger et de lui assigner un order plus prioritaire.