Foren

Erro: No matching handler method found for portlet request

Miguel Alves, geändert vor 12 Jahren.

Erro: No matching handler method found for portlet request

New Member Beiträge: 3 Beitrittsdatum: 14.06.11 Neueste Beiträge
Boas,

Eu estou a desenvolver 2 portlets e neste momento estou a tentar comunicar entre eles através dos eventos, e obtive o seguinte erro:

[WARN ][org.springframework.web.portlet.DispatcherPortlet][1164][http-8080-2]: Handler execution resulted in exception - forwarding to resolved error view
javax.portlet.UnavailableException: No matching handler method found for portlet request: mode 'view', phase 'EVENT_PHASE', parameters map[[empty]]
	at


No ficheiro portlet.xml tenho o seguinte:


<!--?xml version="1.0"?-->

<portlet-app version="2.0" xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd">
	<portlet>
....
            <supported-publishing-event>
        	<qname xmlns:x="http://liferay.com/events">x:chooseCommunity</qname>
        </supported-publishing-event>
	</portlet>
        <portlet>
    ...
            <supported-processing-event>
         	<qname xmlns:x="http://liferay.com/events">x:chooseCommunity</qname>
            </supported-processing-event>
	</portlet>

        <event-definition>
            <qname xmlns:x="http://liferay.com/events">x:chooseCommunity</qname>
            <value-type>java.lang.String</value-type>
        </event-definition>

</portlet-app>


De seguida tenho num Controlador o seguinte para enviar o evento para o outro controlador:


    @ActionMapping("communityChoosen")
    protected void handleCommunityChoosen(ActionRequest request, ActionResponse response)
            throws Exception {

        String communityChoosen = request.getParameter("communityId");

        QName qname = new QName("http://liferay.com/events","chooseCommunity");
    	response.setEvent(qname, communityChoosen);
    }


Do lado do outro controlador para activer o evento tenho o seguinte:

  @EventMapping(value = "{http://liferay.com/events}chooseCommunity")
  public void receiveEvent(EventRequest request, EventResponse response, ModelMap map) {
      Event event = request.getEvent();
      String communityIdFromEvent = (String) event.getValue();
      map.put("communityIdFromEvent", communityIdFromEvent);
      response.setRenderParameter("communityIdFromEvent", communityIdFromEvent);
    }


Já tentei fazer debug e tudo corre bem quando é executado o código no primeiro controlador, no entanto nunca é dectetado o evento no segundo controlador. Alguém me consegue dar alguma sugestão do que poderei estar a fazer mal?

Cumprimentos,
Miguel Alves
thumbnail
Henrique Simoes de Andrade, geändert vor 12 Jahren.

RE: Erro: No matching handler method found for portlet request

Regular Member Beiträge: 165 Beitrittsdatum: 30.04.10 Neueste Beiträge
Oi!
Você pode postar o conteúdo do seu portlet.xml por completo? Está parecendo que não está definido o modo de visualização view. Eu também utilizo IPC e está func. na boa:
Portlet A
	<portlet>
		<portlet-name>portlet-a</portlet-name>
		<display-name>Meu Portlet</display-name>
		<portlet-class>PortletA</portlet-class>
		
		<init-param>
			<name>view-jsp</name>
			<value>/view.jsp</value>
		</init-param>
		<init-param>
			<name>edit-jsp</name>
			<value>/admin.jsp</value>
		</init-param>

		<expiration-cache>0</expiration-cache>
		
		<supports>
			<mime-type>text/html</mime-type>
			<portlet-mode>view</portlet-mode>
			<portlet-mode>edit</portlet-mode>
		</supports>

		<portlet-info>
			<title>Meu Título</title>
			<short-title>Meu Título</short-title>
			<keywords>teste</keywords>
		</portlet-info>
		
		<security-role-ref>
			<role-name>administrator</role-name>
		</security-role-ref>
		<security-role-ref>
			<role-name>user</role-name>
		</security-role-ref>
		
		<!-- Definicao de processamento do evento para IPC -->
		<supported-processing-event>
			<qname xmlns:x="http://meu.host.com/portlet/events">x:ipc.grupoA</qname>
		</supported-processing-event>
	</portlet>


Portlet B
	<portlet>
		<portlet-name>portlet-b</portlet-name>
		<display-name>Meu Portlet B</display-name>
		<portlet-class>PortletB</portlet-class>
		
		<init-param>
			<name>view-jsp</name>
			<value>/view-menu.jsp</value>
		</init-param>
		<init-param>
			<name>edit-jsp</name>
			<value>/admin-menu.jsp</value>
		</init-param>

		<expiration-cache>0</expiration-cache>
		
		<supports>
			<mime-type>text/html</mime-type>
			<portlet-mode>view</portlet-mode>
			<portlet-mode>edit</portlet-mode>
		</supports>

		<portlet-info>
			<title>Meu Título 2</title>
			<short-title>Meu Título 2</short-title>
			<keywords>teste2</keywords>
		</portlet-info>
		
		<security-role-ref>
			<role-name>administrator</role-name>
		</security-role-ref>
		<security-role-ref>
			<role-name>user</role-name>
		</security-role-ref>
		
		<!-- Definicao de publicacao do evento para IPC -->
		<supported-publishing-event>
			<qname xmlns:x="http://meu.host.com/portlet/events">x:ipc.grupoA</qname>
		</supported-publishing-event>
	</portlet>


	<!-- Definicao do evento para IPC -->
	<event-definition>
		<qname xmlns:x="http://meu.host.com/portlet/events">x:ipc.grupoA</qname>
		<value-type>java.lang.Long</value-type>
	</event-definition>
thumbnail
Marcelo Guimarães Melo, geändert vor 12 Jahren.

RE: Erro: No matching handler method found for portlet request

Regular Member Beiträge: 248 Beitrittsdatum: 29.09.08 Neueste Beiträge
Miguel,

Veja o post Integração entre portlets lá eu coloco um exemplo.

Abs,

Marcelo