2012-02-02 3 views
0

Мы используем тег spring: message в проекте с Sitemesh 2. При использовании пружины: сообщение в декораторе, чем -tag, не распознается. Мы можем использовать -tag на наших страницах jsp, но в файле jsp decorator.Sitemesh spring: сообщение не распознано в шаблоне

<?xml version="1.0" encoding="UTF-8"?> 

<excludes/> 

<page-parsers> 
    <parser content-type="text/html" encoding="UTF-8" class="com.opensymphony.module.sitemesh.parser.FastPageParser" /> 
</page-parsers> 

<decorator-mappers> 
    <mapper class="com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper"> 
     <param name="config" value="${decorators-file}" /> 
    </mapper> 
</decorator-mappers> 

Если мы будем использовать устаревшую парсер FastPageParser чем нет никаких проблем, но при использовании нового HTMLPageParser, чем не работает.

Как мы можем решить это?

ответ

0
<spring:message code="msg.x.x.x" /> 

Работает отлично для меня на декораторах, используя FastPageParser.

Несколько вещей, чтобы проверить ..

  • Вы включая springframework и SiteMesh библиотеки тегов на ваших декораторов?

  • Я не уверен, что это повлияет на цепочку фильтров, но я использую собственный конфигуратор configdecorator, который выбирает декоратор на основе макета, заданного в области запроса.

Так в sitemesh.xml:

<decorator-mappers> 
    <mapper class="org.x.x.CustomConfigDecoratorMapper"> 
     <param name="config" value="${decorators-file}" /> 
    </mapper> 
</decorator-mappers> 

CustomConfigDecoratorMapper взгляд как это:

public class CustomConfigDecoratorMapper extends AbstractDecoratorMapper { 

    private static final Logger logger = Logger.getLogger(CustomConfigDecoratorMapper.class); 
    private ConfigLoader configLoader = null; 

    public void init(Config config, Properties properties, DecoratorMapper parent) throws InstantiationException 
    { 
     super.init(config, properties, parent); 
     try 
     { 
      String fileName = properties.getProperty("config", "/WEB-INF/decorators.xml"); 
      configLoader = new ConfigLoader(fileName, config); 
     } 
     catch (Exception e) 
     { 
      throw new InstantiationException(e.toString()); 
     } 
    } 

    public Decorator getDecorator(HttpServletRequest request, Page page) 
    { 
      String layoutName = "default"; 

      String configLayoutName = (String)request.getParameter("layoutName"); 
      if (configLayoutName == null) 
      { 
        configLayoutName = (String)request.getAttribute("layoutName"); 
        if (configLayoutName == null) 
        { 
          configLayoutName = "default"; 
        } 
      } 
      if (configLayoutName != null) 
      { 
        layoutName = configLayoutName; 
      } 

      Decorator result = getNamedDecorator(request, layoutName); 
      return result == null ? super.getDecorator(request, page) : result; 
    } 

    public Decorator getNamedDecorator(HttpServletRequest request, String name) 
    { 
      Decorator result = null; 
      try 
      { 
        result = configLoader.getDecoratorByName(name); 
      } 
      catch (ServletException e) 
      { 
        logger.error("getNamedDecorator(HttpServletRequest, String)", e); 
      } 
      if (result == null || (result.getRole() != null && !request.isUserInRole(result.getRole()))) 
      { 
        return super.getNamedDecorator(request, name); 
      } 
      else 
      { 
        return result; 
      } 
     } 
    } 

Кроме этого .. вы рассматривали использование FMT: сообщение вместо этого?

 Смежные вопросы

  • Нет связанных вопросов^_^