我正在使用刀片 CLI 开发一个简单的 spring mvc portlet。我收到错误消息
错误 [http-nio-8080-exec-9][render_portlet_jsp:131] null org.springframework.web.portlet.NoHandlerFoundException:未找到 portlet 请求的处理程序:模式“视图”,阶段“RENDER_PHASE”,参数映射 [[空]]
我不知道如何解决这个问题。我还检查了以下链接,但我不知道如何修复它。 https://issues.liferay.com/browse/LPS-63801?_ga=1.195671916.133904790.1461624186 任何帮助将不胜感激。谢谢。
请在下面找到代码。
1.SpringController.java
package com.liferay.docs.mvcportlet.portlet.portlet;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.portlet.ModelAndView;
import org.springframework.web.portlet.bind.annotation.RenderMapping;
import org.springframework.web.portlet.bind.annotation.ResourceMapping;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
import javax.portlet.ResourceRequest;
import java.io.IOException;
import java.util.Locale;
@Controller
@RequestMapping("VIEW")
@Scope("prototype")
public class SpringController {
@RenderMapping
public ModelAndView preAssess(RenderRequest renderRequest,
RenderResponse renderResponse) {
ModelAndView mv = new ModelAndView();
mv.setViewName("view");
return mv;
}
}
MyMVCPortlet.java
package com.liferay.docs.mvcportlet.portlet.portlet; import com.liferay.portal.kernel.portlet.bridges.mvc.MVCPortlet; import javax.portlet.Portlet; import javax.portlet.PortletConfig; import javax.portlet.PortletException; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; import org.osgi.service.component.annotations.Component; import org.springframework.web.portlet.DispatcherPortlet; @Component( immediate = true, property = { "com.liferay.portlet.display-category=category.sample", "com.liferay.portlet.instanceable=false", "javax.portlet.display-name=my-mvc-portlet-project Portlet", "javax.portlet.init-param.view-template=/view.jsp", "javax.portlet.init-param.contextConfigLocation=/META-INF/spring-portlet.xml", "javax.portlet.resource-bundle=content.Language", "javax.portlet.security-role-ref=power-user,user", }, service = Portlet.class ) public class MyMvcPortlet extends DispatcherPortlet { @Override public void init(PortletConfig config) throws PortletException { super.init(config); } }
弹簧portlet.xml
<?xml version="1.0"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context- 3.2.xsd"> <context:component-scan base- package="com.liferay.docs.mvcportlet.portlet.portlet" /> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="cache" value="true" /> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <property name="prefix" value="/views/" /> <property name="suffix" value=".jsp" /> </bean> <bean class="org.springframework.context.support.ReloadableResourceBundleMessageSource" id="messageSource" p:fallbackToSystemLocale="true"> <property name="defaultEncoding" value="UTF-8" /> <!-- NOTE: cacheSeconds enable auto-reloading of properties. To turn off, use "-1" --> <property name="cacheSeconds" value="-1" /> <property name="basenames"> <list> <value>content.languages</value> </list> </property> </bean> <bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"> <property name="paramName" value="lang" /> </bean> <bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver"> <property name="defaultLocale" value="en" /> </bean> <bean id="handlerMapping" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMap ping"> <property name="interceptors"> <ref bean="localeChangeInterceptor" /> </property> </bean> </beans>
构建.gradle
buildscript { dependencies { classpath group: "com.liferay", name: "com.liferay.gradle.plugins", version: "1.0.369" } repositories { mavenLocal() maven { url "https://cdn.lfrs.sl/repository.liferay.com/nexus/content/groups/public" } } } apply plugin: "com.liferay.plugin" def SPRING_VERSION = "4.3.2.RELEASE" dependencies { compile group: "com.liferay.portal", name: "com.liferay.portal.kernel", version: "2.0.0" compile group: "com.liferay.portal", name: "com.liferay.util.taglib", version: "2.0.0" compile group: "com.liferay", name: "com.liferay.portal.spring.extender", version: "2.0.0" compile group: "javax.portlet", name: "portlet-api", version: "2.0" compile group: "javax.servlet", name: "servlet-api", version: "2.5" compile group: "jstl", name: "jstl", version: "1.2" compile group: "org.osgi", name: "org.osgi.compendium", version: "5.0.0" compile group: 'org.osgi', name: 'org.osgi.core', version: '5.0.0' // https://mvnrepository.com/artifact/org.springframework/spring-webmvc-portlet compile group: 'org.springframework', name: 'spring-webmvc-portlet', version: "$SPRING_VERSION" // https://mvnrepository.com/artifact/org.springframework/spring-webmvc compile group: 'org.springframework', name: 'spring-webmvc', version: "$SPRING_VERSION" // https://mvnrepository.com/artifact/org.springframework/spring-web compile group: 'org.springframework', name: 'spring-web', version: "$SPRING_VERSION" // https://mvnrepository.com/artifact/org.springframework/spring-core compile group: 'org.springframework', name: 'spring-core', version: "$SPRING_VERSION" // https://mvnrepository.com/artifact/org.springframework/spring-context compile group: 'org.springframework', name: 'spring-context', version: "$SPRING_VERSION" // https://mvnrepository.com/artifact/org.springframework/spring-beans compile group: 'org.springframework', name: 'spring-beans', version: "$SPRING_VERSION" } repositories { mavenLocal() maven { url "https://cdn.lfrs.sl/repository.liferay.com/nexus/content/groups/public" } }
/META-INF/views/view.jsp
<%@ include file="/views/init.jsp" %> <p> <b><liferay-ui:message key="springmvcportlet_SpringMVCPortletmvcportlet.caption"/></b> </p>
任何帮助,将不胜感激。谢谢。