2013-08-18 2 views
0

Я портирую свое приложение для сервлетов Spring MVC для совместимости для развертывания в Liferay. Преобразуйте приложение в портлет Spring MVC. В моем приложении используется html + javascript в качестве интерфейса. Я не могу импортировать .js или .css-файлы в свой index.html сейчас, потому что относительные URL-адреса не работают. Любая помощь в этом отношении?Портлет Liferay-Spring MVC, импортирующий несколько файлов .js

+0

, пожалуйста, покажите мне структуру вашего веб-проекта и местоположение y наши html-страницы –

ответ

0

Ваших ссылки относительно вашей ссылки контекста веба-приложений, которые обычно являются контекстом Корневой портала включая экземпляр портлета и некоторые другие зависимые конструкции (соответствующий LR тему) в этом случае и не портлет (приложение) контекст, который вы принимаете. Таким образом, решение состоит в том, чтобы использовать глобальную переменную экземпляра экземпляра портала с префиксом перед вашими определениями пути. Чтобы достичь этого, вы должны создать этот путь, прежде чем отображать содержимое своей HTML-страницы. Обычно это достигается с использованием некоторых классов полезности Liferay, например. в случае JSP, как это:

<link href="<%= PortalUtil.getStaticResourceURL(request, request.getContextPath() + "/css.jsp", portlet.getTimestamp()) %>" 

Очевидно, что в случае, если вы не на стороне сервера сценариев вроде JSP (BTW, который я думаю, что это не очень хорошая идея), то вы должны решить эту проблему с помощью какой-либо другой Java чтобы писать в ваш HTML, прежде чем он будет отображаться браузером.

+0

Именно это и есть моя проблема. У меня есть чистый интерфейс html и, следовательно, я не могу использовать теги JSP и т. Д. Портирование FE для реализации JSP слишком тяжело в данный момент, и я пытаюсь найти решение для моей ситуации. Pure HTMl + Spring, и мне нужно получить доступ к ресурсам в портлете. Чем больше помощь в отношении инъекции значения из Java? Спасибо. – user1587865

+0

HTML не является динамическим языком на стороне сервера! Вы используете динамические языки на стороне сервера для генерации HTML, который затем отображается браузером на стороне клиента. => Вы не можете «ввести» в него! Что вы можете сделать, так это использовать код JavaScript в вашем HTML для получения этих значений со стороны сервера во время процесса рендеринга. Посмотрите на это в разделе JavaScript, чтобы узнать, как получить доступ к службам. Http://www.liferay.com/documentation/liferay-portal/6.1/user-guide/-/ai/accessing-liferay-services –

+0

В Inject я имел в виду просить способ, с помощью которого я могу получить значения из Java в свои js-файлы. Может быть, как вызов службы BE. Я думаю, что ссылка, которую вы предоставили, поможет мне. Я буду исследовать в этих строках и обновить ее. Спасибо. – user1587865

1

Если вы указали местоположение файлов javascript и css в файле liferay-portlet.xml, оно будет автоматически добавлено. Вам не нужно явно добавлять их в свой файл html/jsp.

в вашем liferay-portlet.xml, добавьте следующие атрибуты с правильным пути к файлу.

<header-portlet-css>/css/main.css</header-portlet-css> 
<header-portlet-javascript>/js/main.js</header-portlet-javascript> 

Кроме того, если вы хотите получить доступ статические ресурсы, такие как изображения или что-либо другое, вы можете использовать этот путь

<img src='<%=request.getContextPath()%>/images/gear.png' class='settings' /> 

, где структура, как это

-portlet --- docroot ------ images -------- gear.png

+0

Да .. Это работает, но я хотел получить доступ ко всем таким статическим ресурсам .. изображения и т. Д. – user1587865

+0

ответ отредактирован .. :) –