Получение абсолютного контекстного пути веб-приложения внутри шаблона Velocity - PullRequest
0 голосов
/ 17 мая 2011

У меня довольно простой (надеюсь: P) вопрос.

Я знаю, что в старом добром коде Java-сервлета я могу получить полный путь запроса для запроса, поступающего на веб-сервер, следующим образом:

String requestBaseUrl = 
    String.format("%s://%s:%s%s", request.getScheme(), request.getServerName(), 
            request.getServerPort(), request.getContextPath());

Теперь сделать то же самое в JSP довольно просто. Однако теперь я должен сделать это в шаблоне Velocity 1.5. В частности, мне нужно вывести эту информацию в виде атрибута «codebase» апплета веб-запуска, который необходимо интегрировать в мое веб-приложение.

Я попробовал это, но апплет отказался запускаться, вместо этого выдав исключение FileNotFoundException: P

<script src="http://www.java.com/js/deployJava.js"></script>
<script>
    var attributes = { code:'org.groundhog.MyApplet', width:360, height:280} ;
    var parameters = {
        jnlp_href: './webstart/myapplet.jnlp', <------------------ this
        bgColor: '#4f616d', mayscript: true
    };
    deployJava.runApplet(attributes, parameters, '1.6');

Так что я думаю, что самый надежный способ сделать это - извлечь и вставить абсолютный URL-адрес, где запущено приложение, и ссылаться на файл jnlp апплета, используя ту же логику, что и в моем предыдущем фрагменте Java. *

Сейчас я перебираю документацию Velocity. Но если бы кому-то приходилось иметь дело с чем-то похожим, я был бы благодарен за эквивалентную идиому в Velocity.

Я благодарю вас за ваше время и помощь!

1 Ответ

1 голос
/ 18 мая 2011

Что ж, после небольшого перерыва в очистке сознания я пришел к выводу, что, по сути, Velocity - это всего лишь механизм текстовых шаблонов, и ему не нужно заниматься хитростью кода в своих представлениях. Комментарий Мэтта только подтвердил мои подозрения;). Спасибо!

Самое простое, что нужно было сделать - сначала получить URL базы кода в моем объекте контроллера, а затем поместить его в модель шаблона (скажем, в переменную с именем codeBaseUrl), и просто позволить Velocity его визуализировать. Короче говоря, комбинация двух подходов выше.

Я приношу свои извинения, так как еще раз понимаю, что 8 часов сна могут решить почти любую проблему. : P

Спасибо за ваше время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...