Портлет Liferay/Icefaces не разрешает доступ в методах doView
У меня проблема с доступом к методам doView(). Я создал портлет, используя Liferay 6.3 в качестве CMS, ICEFACES 3.3.0 и tomcat 7. Я использовал liferay-Face-Bridge, чтобы использовать каркас Icefaces в Liferay. По этой причине я настроил portlet.xml следующим образом:
<portlet>
<portlet-name>FinalTest</portlet-name>
<display-name>FinalTest</display-name>
<portlet-class>org.portletfaces.bridge.GenericFacesPortlet</portlet-class>
<init-param>
<name>javax.portlet.faces.defaultViewId.view</name>
<value>/index.xhtml</value>
</init-param>
<expiration-cache>0</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
</supports>
<portlet-info>
<title>FinalENELTest</title>
<short-title>FinalENELTest</short-title>
<keywords>FinalENELTest</keywords>
</portlet-info>
<security-role-ref>
<role-name>administrator</role-name>
</security-role-ref>
<security-role-ref>
<role-name>guest</role-name>
</security-role-ref>
<security-role-ref>
<role-name>power-user</role-name>
</security-role-ref>
<security-role-ref>
<role-name>user</role-name>
</security-role-ref>
</portlet>
Также у меня есть ManagedBean вот так (для бизнес-логики):
@ManagedBean(name="backingBean")
@SessionScoped
public class BackingBeanImpl extends GenericPortlet{
....
@Override
protected void doView(RenderRequest request, RenderResponse response)
throws PortletException, IOException {
// TODO Auto-generated method stub
System.out.println("I'M HERE");
super.doView(request, response);
}
}
Проблема в том, что при запуске портлета метод doView() не вызывается. Может быть, это проблема моста. Я не знаю.
Я надеюсь, что кто-то может помочь мне.
Спасибо
1 ответ
Ваша реализация портлета - в соответствии с portlet.xml, который вы перечисляете - org.portletfaces.bridge.GenericFacesPortlet
, Тот факт, что ваш компонент поддержки реализует GenericPortlet, не делает его реализацией портлета. doView реализован в ссылочном портлете, а не в вашем классе.
Если вы хотите переопределить GenericPortlet
методы, вы не должны использовать JSF. Следствие этого: если вы используете JSF, используйте контроллеры стиля JSF для доступа к вашей бизнес-логике.
Кстати, вы не должны помещать свою бизнес-логику в портлет, а должны делать так, чтобы портлет обращался к вашей бизнес-логике. Не используйте вашу бизнес-логику для API-интерфейса портлета: это ограничит вашу бизнес-логику для работы только в этой среде.