2016-04-25 2 views
1

J'utilise Spring-Struts2-Tiles2 dans mon projet et je suis en train d'utiliser la notation générique ici pour supprimer le double dans ma configuration d'iciTiles2 Wildcard ne fonctionne pas

<definition name="home-template1" template="/WEB-INF/jsp/templates/template1.jsp"> 
    <put-attribute name="banner" value="/WEB-INF/jsp/sitePages/banner.jsp" /> 
    <put-attribute name="header" value="/WEB-INF/jsp/sitePages/header.jsp" /> 
    <put-attribute name="body" value="/WEB-INF/jsp/sitePages/body.jsp" /> 
    <put-attribute name="archive" value="/WEB-INF/jsp/sitePages/archive.jsp" /> 
    <put-attribute name="footer" value="/WEB-INF/jsp/sitePages/footer.jsp" /> 
</definition> 
<definition name="home-template2" template="/WEB-INF/jsp/templates/template2.jsp"> 
    <put-attribute name="banner" value="/WEB-INF/jsp/sitePages/banner.jsp" /> 
    <put-attribute name="header" value="/WEB-INF/jsp/sitePages/header.jsp" /> 
    <put-attribute name="body" value="/WEB-INF/jsp/sitePages/body.jsp" /> 
    <put-attribute name="archive" value="/WEB-INF/jsp/sitePages/archive.jsp" /> 
    <put-attribute name="footer" value="/WEB-INF/jsp/sitePages/footer.jsp" /> 
</definition> 
<definition name="home-template3" template="/WEB-INF/jsp/templates/template3.jsp"> 
    <put-attribute name="banner" value="/WEB-INF/jsp/sitePages/banner.jsp" /> 
    <put-attribute name="header" value="/WEB-INF/jsp/sitePages/header.jsp" /> 
    <put-attribute name="body" value="/WEB-INF/jsp/sitePages/body.jsp" /> 
    <put-attribute name="archive" value="/WEB-INF/jsp/sitePages/archive.jsp" /> 
    <put-attribute name="footer" value="/WEB-INF/jsp/sitePages/footer.jsp" /> 
</definition> 

à

<definition name="home-*" template="/WEB-INF/jsp/templates/{1}.jsp"> 
    <put-attribute name="banner" value="/WEB-INF/jsp/sitePages/banner.jsp" /> 
    <put-attribute name="header" value="/WEB-INF/jsp/sitePages/header.jsp" /> 
    <put-attribute name="body" value="/WEB-INF/jsp/sitePages/body.jsp" /> 
    <put-attribute name="archive" value="/WEB-INF/jsp/sitePages/archive.jsp" /> 
    <put-attribute name="footer" value="/WEB-INF/jsp/sitePages/footer.jsp" /> 
</definition> 

mais tuiles me donne l'erreur suivante: org.apache.tiles.definition.NoSuchDefinitionException: home-template2

ci-dessous est mon struts.x ml fichier ciselée avec seulement les deux actions responsables de l'appeler

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE struts PUBLIC 
"-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" 
"http://struts.apache.org/dtds/struts-2.1.dtd"> 
<struts> 
<constant name="struts.devMode" value="true" /> 
<constant name="struts.enable.SlashesInActionNames" value="true"/> 
<constant name="struts.mapper.alwaysSelectFullNamespace" value="false"/>  
<constant name="struts.action.extension" value=","/> 

<package name="test" extends="struts-default" namespace="/"> 

    <result-types> 
     <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" /> 
    </result-types> 

    <action name="checkBlogUrl" class="checkBlogUrl"> 
     <result name="success" type="redirectAction"> 
      <param name="actionName">postPreview</param> 
      <param name="nextAction">${nextAction}</param> 
      <param name="blogSiteUrl">${blogSiteUrl}</param> 
     </result> 
     <result name="error">/WEB-INF/jsp/cmsPages/index.jsp</result> 
    </action> 

    <action name="postPreview" class="blogPostAction"> 
     <result name="success" type="tiles">${nextAction}</result> 
    </action> 

</package> 
</struts> 

exemple appel url: mycms: 8080/CMS/postPreview NextAction = home-template2 & blogSiteUrl = qsdcza

(note: j'ai enlevé la extension .action/.do des entretoises)

aussi, puis-je utiliser les jokers dans l'extension? par exemple:

<definition name="about-*" extends="home-*"> 
    <put-attribute name="body" value="/WEB-INF/jsp/sitePages/about.jsp" /> 
</definition> 

veulent essayer moi-même, mais ne peut pas faire le travail de base générique :(

Merci pour la lecture et je vous remercie de votre aide

Répondre

0

Tiles has wildcard support dans les versions 2.1, 2.2..

By default, Tiles 2.2 supports wildcards in definition names. Wildcards help a lot in writing less code to declare your definitions.

Pour une meilleure utilisation des carreaux et Struts2 voir Tiles 2.2.2 Integration.

Vous pouvez utiliser la définition de tuiles comme ceci

<definition name="home*" template="/WEB-INF/jsp/templates/{1}.jsp"> 
    <put-attribute name="banner" value="/WEB-INF/jsp/sitePages/banner.jsp" /> 
    <put-attribute name="header" value="/WEB-INF/jsp/sitePages/header.jsp" /> 
    <put-attribute name="body" value="/WEB-INF/jsp/sitePages/body.jsp" /> 
    <put-attribute name="archive" value="/WEB-INF/jsp/sitePages/archive.jsp" /> 
    <put-attribute name="footer" value="/WEB-INF/jsp/sitePages/footer.jsp" /> 
</definition> 
+0

merci, j'ai trouvé mon problème. J'utilise actuellement des tuiles 2.0. J'ai essayé de mettre à jour à 2.2 mais j'ai beaucoup de problème avec mon pom. –

+0

vous êtes les bienvenus –