2015-10-16 3 views
4

Я хочу создать страницу конфигурации для портлета liferay.Liferay: создание страницы конфигурации портлета. Как обеспечить правильный путь jsp?

некоторый код из portlet.xml

<portlet-name>example-config</portlet-name> 
    <display-name>example-to-delete</display-name> 
    <portlet-class>org.springframework.web.portlet.DispatcherPortlet</portlet-class> 
    <init-param> 
     <name>contextConfigLocation</name> 
     <value>/WEB-INF/spring-context/portlet/example-config-portlet.xml</value> 
    </init-param> 
    <init-param> 
     <name>config-jsp</name> 
     <value>/WEB-INF/html/jsp/config.jsp</value> 
    </init-param> 

ConfigurationActionImpl

public class ConfigurationActionImpl implements ConfigurationAction { 

@Override 
public void processAction(PortletConfig portletConfig, ActionRequest actionRequest, 
          ActionResponse actionResponse) throws Exception { 

} 

@Override 
public String render(PortletConfig portletConfig, RenderRequest renderRequest, 
        RenderResponse renderResponse) throws Exception { 
    System.out.println("RENDER CALL"); 
    return "/html/jsp/config.jsp"; 
} 
} 

Liferay-portlet.xml

<portlet> 
    <portlet-name>example-to-delete</portlet-name> 
    <icon>/icon.png</icon> 
    <configuration-action-class>by.example.ConfigurationActionImpl</configuration-action-class> 
    <instanceable>false</instanceable>  
</portlet> 

Когда я запускаю его, у меня есть вкладка в настройках конфигурации (метод render работает, я вижу сообщение «RENDER CALL» в консоли), но мой jsp не отображается, без ошибок и предупреждений. Я пробовал разные способы предоставления jsp-путей, но без прогресса. Что мне делать?

+0

Инициализировать параметр 'config-jsp' и переопределить метод' ConfigurationActionImpl # render' являются взаимоисключающими. Вам не нужно реализовывать этот метод, если задан параметр «config-jsp» init. Правильно ли путь JSP? Проверьте журналы снова, я считаю, что будет какая-то ошибка - проблема компиляции JSP или что-то в этом роде. –

+0

В журналах ошибок нет. Я пробовал разные способы предоставления jsp-пути (с помощью метода config-jsp и render). Исключение выбрасывается, когда я удаляю «/» до пути jsp. В других случаях ошибок в журнале нет, и разные пути не работают @ TomášPiňos – jahra

+0

Попробуйте вставить некоторую информацию об отладке в JSP ('<% System.out.println (« Это JSP »);%>') и прокомментировать все остальное (включая импорт). Если вы увидите информацию в консоли, мы можем исключить неверный путь. –

ответ

3

Если класс действия конфигурации расширяет DefaultConfigurationAction, достаточно указать путь JSP как параметр инициализации в файле portlet.xml (configTemplate и config-jsp - одинаково допустимые имена). Вам не нужно переопределять метод render.

В вашем случае класс действия конфигурации не распространяется DefaultConfigurationAction, поэтому параметр init бесполезен.

Путь JSP всегда должен начинаться с корня класса пути - т.е. начните с /WEB-INF для JSP, размещенных там.

См. Developer's Guide для полного описания конфигураций портлетов.

Вы также можете создавать настраиваемые портлеты с фреймворком Spring Portlet MVC (который вы используете в качестве вопроса). Это означает создание выделенного контроллера для редактирования режима портлета (@Controller @RequestMapping("edit")). С Spring вы можете реализовать конфигурацию так же, как режим просмотра портлета (т. Е. С теми же тегами JSP, привязкой формы, проверкой и всем комфортом, который приносит Spring Framework).