这个问题已经困扰了我几天了,配置应该没问题,但不知道为什么老是无法成功跳转页面,请各位朋友帮忙看看啊,谢谢。我先把代码发上来: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>
<include file="struts-default.xml"></include>
<package name="struts2" extends="struts-default">
<action name="AddUserStoryCard" class="com.struts2.app.AddUserStoryCardAction">
<result name="adduserstorycard">/edit_userstorycard.jsp</result>
</action>
</package>
</struts>
web.xml<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>UserStory-portlet</display-name>
  <filter>
   <description>Struts2Filter</description>
   <display-name>Struts2Filter</display-name>
   <filter-name>Struts2Filter</filter-name>
   <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
  </filter>
  <filter-mapping>
   <filter-name>Struts2Filter</filter-name>
   <url-pattern>/*</url-pattern>
  </filter-mapping>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <jsp-config>
   <taglib>
   <taglib-uri>http://java.sun.com/portlet_2_0</taglib-uri>
   <taglib-location>
   /WEB-INF/tld/liferay-portlet.tld
   </taglib-location>
   </taglib>
  </jsp-config>
</web-app>
AddUserStoryCardAction.java
package com.struts2.app;public class AddUserStoryCardAction {
    private String username;
    private String password;
    
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    
    public String execute() throws Exception {
        return "adduserstorycard";
    }
}View.jsp
<%@ include file="/common/init.jsp" %><form action="AddUserStoryCard.action" method="post">
        username:<input type="text" name="username"><br>
        password:<input type="password" name="password"><br>
        <input type="submit" value="Add User Story Card">
        </form>

解决方案 »

  1.   

    最好点击按钮跳转,出现如下提示:
    找不到请求的资源。 http://localhost:8080/zh/web/guest/AddUserStoryCard.action当然,我的控制台也报错,但没有影响显示我也没有管理,不知道是否与错误有关:
      Copying 1 file to C:\Users\Administrator\Documents\Project\Match\liferay-portal-6.0.5\tomcat-6.0.26\webapps\UserStory-portlet\WEB-INF\classes
      Copying 1 file to C:\Users\Administrator\Documents\Project\Match\liferay-portal-6.0.5\tomcat-6.0.26\webapps\UserStory-portlet\WEB-INF\classes
      Copying 1 file to C:\Users\Administrator\Documents\Project\Match\liferay-portal-6.0.5\tomcat-6.0.26\webapps\UserStory-portlet\META-INF
    Aug 21, 2010 3:12:55 PM org.apache.catalina.startup.HostConfig checkResources
    INFO: Undeploying context [/UserStory-portlet]
    Aug 21, 2010 3:12:55 PM org.apache.catalina.loader.WebappClassLoader clearThreadLocalMap
    SEVERE: A web application created a ThreadLocal with key of type [null] (value [com.opensymphony.xwork2.inject.ContainerImpl$10@3f5274]) and a value of type [java.lang.Object[]] (value [[Ljava.lang.Object;@13e545d]) but failed to remove it when the web application was stopped. To prevent a memory leak, the ThreadLocal has been forcibly removed.
    Aug 21, 2010 3:12:55 PM org.apache.catalina.loader.WebappClassLoader clearThreadLocalMap
    SEVERE: A web application created a ThreadLocal with key of type [null] (value [com.opensymphony.xwork2.inject.ContainerImpl$10@114dfc0]) and a value of type [java.lang.Object[]] (value [[Ljava.lang.Object;@16dd073]) but failed to remove it when the web application was stopped. To prevent a memory leak, the ThreadLocal has been forcibly removed.
    Aug 21, 2010 3:12:55 PM org.apache.catalina.startup.HostConfig deployDescriptor
    INFO: Deploying configuration descriptor UserStory-portlet.xml
    Aug 21, 2010 3:12:55 PM org.apache.catalina.startup.HostConfig deployDescriptor
    WARNING: A docBase C:\Users\Administrator\Documents\Project\Match\liferay-portal-6.0.5\tomcat-6.0.26\webapps\UserStory-portlet inside the host appBase has been specified, and will be ignored
    log4j:ERROR Could not create an Appender. Reported error follows.
    java.lang.ClassCastException: org.apache.log4j.ConsoleAppender
    at org.apache.log4j.xml.DOMConfigurator.parseAppender(DOMConfigurator.java:238)
    at org.apache.log4j.xml.DOMConfigurator.findAppenderByName(DOMConfigurator.java:171)
    at org.apache.log4j.xml.DOMConfigurator.findAppenderByReference(DOMConfigurator.java:184)
    at org.apache.log4j.xml.DOMConfigurator.parseChildrenOfLoggerElement(DOMConfigurator.java:502)
    at org.apache.log4j.xml.DOMConfigurator.parseRoot(DOMConfigurator.java:471)
    at org.apache.log4j.xml.DOMConfigurator.parse(DOMConfigurator.java:921)
    at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:790)
    at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:696)
    at org.apache.log4j.xml.DOMConfigurator.configure(DOMConfigurator.java:821)
    at com.liferay.util.log4j.Log4JUtil.configureLog4J(Log4JUtil.java:48)
    at com.liferay.portal.deploy.hot.PortletHotDeployListener.initLogger(PortletHotDeployListener.java:448)
    at com.liferay.portal.deploy.hot.PortletHotDeployListener.doInvokeDeploy(PortletHotDeployListener.java:235)
    at com.liferay.portal.deploy.hot.PortletHotDeployListener.invokeDeploy(PortletHotDeployListener.java:101)
    at com.liferay.portal.kernel.deploy.hot.HotDeployUtil._doFireDeployEvent(HotDeployUtil.java:109)
    at com.liferay.portal.kernel.deploy.hot.HotDeployUtil._fireDeployEvent(HotDeployUtil.java:182)
    at com.liferay.portal.kernel.deploy.hot.HotDeployUtil.fireDeployEvent(HotDeployUtil.java:38)
    at com.liferay.portal.kernel.servlet.PortletContextListener.doPortalInit(PortletContextListener.java:99)
    at com.liferay.portal.kernel.util.BasePortalLifecycle.portalInit(BasePortalLifecycle.java:42)
    at com.liferay.portal.kernel.util.PortalLifecycleUtil.register(PortalLifecycleUtil.java:52)
    at com.liferay.portal.kernel.util.BasePortalLifecycle.registerPortalLifecycle(BasePortalLifecycle.java:50)
    at com.liferay.portal.kernel.servlet.PortletContextListener.contextInitialized(PortletContextListener.java:55)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3972)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4467)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
    at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:637)
    at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:563)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:498)
    at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1345)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:303)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
    at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1337)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1601)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1610)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1590)
    at java.lang.Thread.run(Thread.java:595)
    log4j:ERROR Could not parse url [jar:file:/C:/Users/Administrator/Documents/Project/Match/liferay-portal-6.0.5/tomcat-6.0.26/webapps/UserStory-portlet/WEB-INF/lib/portal-impl.jar!/META-INF/portal-log4j.xml].
    java.lang.NullPointerException
    at java.util.Hashtable.put(Hashtable.java:396)
    at org.apache.log4j.xml.DOMConfigurator.findAppenderByName(DOMConfigurator.java:172)
    at org.apache.log4j.xml.DOMConfigurator.findAppenderByReference(DOMConfigurator.java:184)
    at org.apache.log4j.xml.DOMConfigurator.parseChildrenOfLoggerElement(DOMConfigurator.java:502)
    at org.apache.log4j.xml.DOMConfigurator.parseRoot(DOMConfigurator.java:471)
    at org.apache.log4j.xml.DOMConfigurator.parse(DOMConfigurator.java:921)
    at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:790)
    at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:696)
    at org.apache.log4j.xml.DOMConfigurator.configure(DOMConfigurator.java:821)
    at com.liferay.util.log4j.Log4JUtil.configureLog4J(Log4JUtil.java:48)
    at com.liferay.portal.deploy.hot.PortletHotDeployListener.initLogger(PortletHotDeployListener.java:448)
    at com.liferay.portal.deploy.hot.PortletHotDeployListener.doInvokeDeploy(PortletHotDeployListener.java:235)
    at com.liferay.portal.deploy.hot.PortletHotDeployListener.invokeDeploy(PortletHotDeployListener.java:101)
    at com.liferay.portal.kernel.deploy.hot.HotDeployUtil._doFireDeployEvent(HotDeployUtil.java:109)
    at com.liferay.portal.kernel.deploy.hot.HotDeployUtil._fireDeployEvent(HotDeployUtil.java:182)
    at com.liferay.portal.kernel.deploy.hot.HotDeployUtil.fireDeployEvent(HotDeployUtil.java:38)
    at com.liferay.portal.kernel.servlet.PortletContextListener.doPortalInit(PortletContextListener.java:99)
    at com.liferay.portal.kernel.util.BasePortalLifecycle.portalInit(BasePortalLifecycle.java:42)
    at com.liferay.portal.kernel.util.PortalLifecycleUtil.register(PortalLifecycleUtil.java:52)
    at com.liferay.portal.kernel.util.BasePortalLifecycle.registerPortalLifecycle(BasePortalLifecycle.java:50)
    at com.liferay.portal.kernel.servlet.PortletContextListener.contextInitialized(PortletContextListener.java:55)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3972)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4467)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
    at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:637)
    at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:563)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:498)
    at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1345)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:303)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
    at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1337)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1601)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1610)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1590)
    at java.lang.Thread.run(Thread.java:595)
    15:12:58,688 INFO  [XmlConfigurationProvider:42] Parsing configuration file [struts-default.xml]
    15:12:58,830 INFO  [XmlConfigurationProvider:42] Parsing configuration file [struts-plugin.xml]
    15:12:58,836 INFO  [XmlConfigurationProvider:42] Unable to locate configuration files of the name struts.xml, skipping
    15:12:58,837 INFO  [XmlConfigurationProvider:42] Parsing configuration file [struts.xml]
      

  2.   

    现在正在做一个liferay项目,其中也涉及到跳转的问题,其中跳转应该使用绝对路径:例如我们的跳转路径为:/html/portlet/adManager/error2.jsp,希望对你有用。
      

  3.   

    http://localhost:8080/zh/web/guest/AddUserStoryCard.action应该是命名空间不对导致的/zh/web/guest是什么意思
      

  4.   

    给你的action加个命名空间,struts.xml中也定义,portlet.xml中也要定义该命名空间,例如action所在命名空间为view
    <init-param>
                <name>viewNamespace</name>
                <value>/view</value>
            </init-param>        <!-- The default action to invoke in view mode. -->
            <init-param>
                <name>defaultViewAction</name>
                <value>index</value>
            </init-param>
      

  5.   

    楼主贴的这些 丝毫看不到跟Liferay有关的配置
      

  6.   

    根据你的访问路径它应该找不到相应的namespace吧?然后就进入xml找相应的jsp页面中连接strut2中action是不是直接访问的action中的name是否有误