a 链接通过action跳转 出现There is no Action mapped for namespace [/blog] and action name

u013529401 2016-04-26 05:52:46
我想用a链接跳转到新页面,通过action跳转,类似这个样子

<li id="nav-course"><a href="/course">课程</a></li>
<li id="nav-notice"><a href="/announcement">公告</a></li>
<li><a href="/">登录</a></li>


我就这么写了

<a href="/">首页</a>
</li>
<li id="nav-buy">
<a href="/">买卖</a>
</li>
<li id="nav-blog">
<a href="/blog">博客</a>
</li>
<li id="nav-login">
<a href="/login">登录</a>
</li>


是用action跳的吧?没错吧,于是我就和这个一样,但是一直报
There is no Action mapped for namespace [/blog] and action name [] associated with context path []. - [unknown location]



ssh全注解写的
在action里很简单,就是这样

package com.dbxuyue.action;

import com.dbxuyue.service.DbUserService;
import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.convention.annotation.*;
import org.springframework.context.annotation.Scope;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
@Controller
@Namespace("/")
@ParentPackage("struts-default")
public class loginAction extends ActionSupport{

private String username;
private String password;
@Autowired
private DbUserService dbUserService;


@Action(value="index",results = {
@Result(name="index",location = "/index.jsp"),
@Result(name="blog",location = "WEB-INF/blog/index.jsp")
})
public String toLogin(){

System.out.println("is in!!!");
return "index";
}

@Action(value="login",results = {
@Result(name="index",location = "/index.jsp"),
@Result(name="blog",location = "/success.jsp")
})
public String blog(){

return "blog";
}



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;
}
}


发现只有点登录会跳到index,只会进入login这个action
blog死活进不去,求大神帮我解决

struts.xml:
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">


<struts>
<!-- 把它设置为开发模式,发布时要设置为false -->
<constant name="struts.devMode" value="true"/>
<constant name="struts.i18n.encoding" value="UTF-8" />
<!-- 设置在class被修改时是否热加载,发布时要设置为false -->
<constant name="struts.convention.classes.reload" value="true"/>
<constant name="struts.convention.default.parent.package" value="struts-default"/>
<!--<constant name="struts.convention.result.path" value="/WEB-INF/pages"/>-->
<!--<constant name="struts.convention.package.locators" value="web,action"/>-->
<constant name="struts.objectFactory" value="spring"/>
</struts>


spring-config.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:cache="http://www.springframework.org/schema/cache"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/cache
http://www.springframework.org/schema/cache/spring-cache.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd ">

<context:property-placeholder location="classpath*:jdbc.properties"/>
<context:component-scan base-package="com.dbxuyue.dao"></context:component-scan>
<context:component-scan base-package="com.dbxuyue.service"></context:component-scan>
<context:component-scan base-package="com.dbxuyue.action"></context:component-scan>
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>

</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="annotatedClasses">
<list>
<value>com.dbxuyue.entity.DbUser</value>
</list>
</property>
<property name="dataSource">
<ref bean="dataSource"/>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.connection.username">root</prop>
<prop key="hibernate.connection.password">7448179</prop>
<!--上下文session 线程-->
<!--<prop key="hibernate.current_session_context_class">thread</prop>-->
<!--<prop key="hibernate.show_sql">true</prop>-->
<!--<prop key="hibernate.format_sql">true</prop>-->
</props>
</property>
<property name="packagesToScan" value="com.dbxuyue.entity"/>
</bean>

<!--事务-->
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!-- 用注解来实现事务管理 -->
<tx:annotation-driven transaction-manager="transactionManager" />


</beans>


用的是intellij idea

报错:

严重: Could not find action or result
/blog/
There is no Action mapped for namespace [/blog] and action name [] associated with context path []. - [unknown location]
at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:185)
at org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:63)
at org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:37)
at com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:554)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:81)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1074)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2466)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2455)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
...全文
404 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
nikyotensai 2016-05-13
  • 打赏
  • 举报
回复
引用 4 楼 qq_33756435 的回复:
你只配置了两个action:index.action与login.action,为什么会访问blog.action?
+1
u013529401 2016-05-09
  • 打赏
  • 举报
回复
http://www.iteye.com/problems/59216 找了很久,也没有发现办法,但是发现了和我类似的哥们的例子 于是我把blog改了个boke的名字就好了 黑人问号脸???? 谁能告诉我什么原因
u013529401 2016-05-09
  • 打赏
  • 举报
回复
今天又试了下,现情况是这样的 href="/blog" 是无论如何也进不去的 但是 href="/blog.action" 却可以进去 但是我配置了filter url-patter 为/*了啊
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
nikyotensai 2016-04-28
  • 打赏
  • 举报
回复
引用 4 楼 qq_33756435 的回复:
你只配置了两个action:index.action与login.action,为什么会访问blog.action?
+1
颐牟权月 2016-04-28
  • 打赏
  • 举报
回复
引用 6 楼 u013529401 的回复:
[quote=引用 4 楼 qq_33756435 的回复:] 你只配置了两个action:index.action与login.action,为什么会访问blog.action?
这个是我昨晚改了名字调试用的,把blog改成了Index,实际上我后台就是

@Action(value="login",results = {
            @Result(name="index",location = "/index.jsp"),
            @Result(name="blog",location = "WEB-INF/blog/index.jsp")
    })
    public String toLogin(){
 
        System.out.println("is  in!!!");
        return "index";
    }
 
    @Action(value="blog",results = {
            @Result(name="index",location = "/index.jsp"),
            @Result(name="blog",location = "/success.jsp")
    })
    public String blog(){
 
        return "blog";
    }
没有Index这个东西,问题依旧是这个问题,代码贴的时候贴错了抱歉,因为现在依旧是这样[/quote] <a href="blog/blog">博客</a>
qq_33756435 2016-04-27
  • 打赏
  • 举报
回复
你只配置了两个action:index.action与login.action,为什么会访问blog.action?
u013529401 2016-04-27
  • 打赏
  • 举报
回复

地址栏就是

http://localhost/login
http://localhost/blog
这样


http://localhost/login是可以的


http://localhost/blog并不会进入action
u013529401 2016-04-27
  • 打赏
  • 举报
回复
引用 4 楼 qq_33756435 的回复:
你只配置了两个action:index.action与login.action,为什么会访问blog.action?
这个是我昨晚改了名字调试用的,把blog改成了Index,实际上我后台就是

@Action(value="login",results = {
            @Result(name="index",location = "/index.jsp"),
            @Result(name="blog",location = "WEB-INF/blog/index.jsp")
    })
    public String toLogin(){
 
        System.out.println("is  in!!!");
        return "index";
    }
 
    @Action(value="blog",results = {
            @Result(name="index",location = "/index.jsp"),
            @Result(name="blog",location = "/success.jsp")
    })
    public String blog(){
 
        return "blog";
    }
没有Index这个东西,问题依旧是这个问题,代码贴的时候贴错了抱歉,因为现在依旧是这样
  • 打赏
  • 举报
回复
引用 4 楼 qq_33756435 的回复:
你只配置了两个action:index.action与login.action,为什么会访问blog.action?
+1
乔不思 2016-04-26
  • 打赏
  • 举报
回复
把你地址栏的显示也贴出来。
乔不思 2016-04-26
  • 打赏
  • 举报
回复
  <a href="/">首页</a>
                                </li>
                                <li id="nav-buy">
                                    <a href="/">买卖</a>
                                </li>
                                <li id="nav-blog">
                                    <a href="/blog">博客</a>
                                </li>
                                <li id="nav-login">
                                    <a href="/login">登录</a>
                                </li>
把 <a href="/blog">博客</a> 前面的 '/ '去掉,改成这样 <a href="blog">博客</a> 试试

81,095

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧