2012-04-05 173 views
0

我正在使用Liferay6和Struts2。Liferay + Struts2没有操作映射为操作名称默认值。

这是login.jsp的

<%@ taglib prefix="s" uri="/struts-tags" %> 
<html> 
<head> 
<title>Struts 2 Login Application!</title> 
</head> 
<body> 
<s:form action="login" method="POST" validate="true"> 
<tr> 
<td colspan="2"> 
Login 
</td> 
</tr> 
<s:actionerror /> 
<s:fielderror /> 
<s:textfield name="username" label="Login name"/> 
<s:password name="password" label="Password"/> 
<s:submit value="Login" align="center"/> 
</s:form> 
</body> 
</html> 

这是struts.xml的文件

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE struts PUBLIC 
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
    "http://struts.apache.org/dtds/struts-2.0.dtd"> 

<struts> 

    <constant name="struts.devMode" value="true" /> 

    <package name="default" extends="struts-default" namespace="/view"> 
     <action name="login" 
      class="net.LoginAction"> 
      <result name="success">/Welcome.jsp</result> 
      <result name="error">/view.jsp</result> 
     </action> 
    </package> 
</struts> 

这是异常堆栈跟踪

9:51:52,109 ERROR [Jsr168Dispatcher:27] Could not find action 
There is no Action mapped for action name default. - [unknown location] 
    at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:177) 
    at org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:61) 
    at org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39) 
    at com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:47) 
    at com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:36) 
    at org.apache.struts2.portlet.dispatcher.Jsr168Dispatcher.serviceAction(Jsr168Dispatcher.java:446) 
    at org.apache.struts2.portlet.dispatcher.Jsr168Dispatcher.render(Jsr168Dispatcher.java:323) 
    at com.liferay.portlet.FilterChainImpl.doFilter(FilterChainImpl.java:100) 
    at com.liferay.portal.kernel.portlet.PortletFilterUtil.doFilter(PortletFilterUtil.java:64) 
    at com.liferay.portal.kernel.servlet.PortletServlet.service(PortletServlet.java:93) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:72) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:68) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684) 
    at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:593) 
    at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:530) 
    at com.liferay.portlet.InvokerPortletImpl.invoke(InvokerPortletImpl.java:639) 
+0

你在哪里得到什么页面的url这个错误?网站名称/ youapp /查看/ login.action? – gooogenot 2012-04-05 20:57:25

回答

0

There is no Action mapped for action name default.

但你做n AME 登录

<action name="login" class="net.LoginAction">

你的行动url必须sitename/youapp/view/login.action

除了为loggining你HAVA两个动作。

<action name="prepareLogin" class="net.LoginAction" method="input"> 
     <result name="success">/login.jsp</result> 
    </action> 

prepareLogin - 这个动作只能查看登录页面

<action name="login" class="net.LoginAction" method="execute"> 
     <result name="success">/Welcome.jsp</result> 
     <result name="error">/login.jsp</result> 
    </action> 

login - 这个动作得到loggining

相关问题