Spring правильно вызывает файл свойств - PullRequest
2 голосов
/ 31 марта 2011

У меня есть приложение Spring mvc, и я рендеринг некоторых PDF-файлов с использованием классов, которые расширяют AbstractPdfView. У меня есть несколько PDF-файлов, и я подумал, что было бы целесообразно создать вспомогательный класс, чтобы добавить некоторые общие функции. Затем я решил, что хочу добавить любой выходной текст в мой файл messages_en.properties. Как мне получить доступ к этому файлу из моего вспомогательного класса? Прямо сейчас я создаю экземпляр своего вспомогательного класса вручную. Выглядит так:

   public class PdfEarningsRecordView extends AbstractPdfView {

    @Override
    protected void buildPdfDocument(Map<String, Object> model, Document document, PdfWriter writer, 
            HttpServletRequest request, HttpServletResponse response) throws Exception {

        HelperClass helper = new HelpderClass();
......

Я пытался заставить Helper расширить ApplicationContextAware, но всегда возвращал ноль. Я также попробовал следующее с тем же результатом:

@Autowire
private ApplicationContext context;
header = context.getMessage("myHeader", null, Locale.getDefault());

Мне кажется, что я неправильно использую Spring при создании HelperClass вручную. Любые советы будут оценены.

Спасибо

1 Ответ

2 голосов
/ 31 марта 2011

AbstractPdfView является подклассом ApplicationObjectSupport, который имеет полезный метод getMessageSourceAccessor(), который возвращает MessageSourceAccessor, который является самым простым способом получения сообщений из инфраструктуры. Просто передайте это вашему классу помощника:

public class PdfEarningsRecordView extends AbstractPdfView {

@Override
protected void buildPdfDocument(Map<String, Object> model, Document document, PdfWriter writer, HttpServletRequest request, HttpServletResponse response) throws Exception {

    HelperClass helper = new HelperClass(getMessageSourceAccessor());

Помощник может использовать это соответственно.

Обратите внимание, что для того, чтобы это работало, объект PdfEarningsRecordView должен быть правильно инициализирован. Spring обычно делает это для вас, вызывая ApplicationObjectSupport.setApplicationContext() во время запуска, но если вы сами создаете экземпляр PdfEarningsRecordView, по какой-либо причине вам придется вызывать этот метод самостоятельно.

...