本帖最后由 houpengfei111 于 2013-03-14 11:32:27 编辑

解决方案 »

  1.   

    form表单里是否有namespace="/test"
      

  2.   

    我直接从地址栏打地址访问的:
    我访问的url为:http://localhost:8080/项目名称/test/hello.action
      

  3.   

    struts2.xml配置文件里的namespace要和jsp页面中的form表单中action的namespace必须使用相同的命名空间
      

  4.   

    我没用struts2的<s:action>标签,就是直接访问,不可以吗?
      

  5.   

    你把Action里面的namespace注解去掉试试
      

  6.   

    /module/success.jsp? 有这个吗?
      

  7.   

    我告诉你我的解决办法吧,因为我遇到过,你把Action名字改改,再试试,应该行,我就是这样的
      

  8.   

    建议使用apache的mvc注解:
    web.xml:
    <servlet>
    <servlet-name>mvc</servlet-name>
    <servlet-class>org.apache.commons.mvc.web.ActionServlet</servlet-class>
    <init-param>
    <param-name>config</param-name>
    <param-value>/WEB-INF/classes/context.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
    <servlet-name>mvc</servlet-name>
    <url-pattern>*.php</url-pattern>
    </servlet-mapping>
    context.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <beans>

            <!-- 配置action所在的位置, 多个包用逗号隔开 -->
    <action package="com.number.control.action"/> <!-- 配置ajax所在的位置(ajax的目的是要把java和javascript合为一体), 多个包用逗号隔开 -->
    <ajax package="com.number.control.ajax"/>

    </beans>action的代码:package com.number.control.action;import org.apache.commons.mvc.annotation.ActionBean;
    import org.apache.commons.mvc.entity.Forward;
    import org.apache.commons.mvc.web.BaseAction;
    import org.apache.log4j.Logger;
    import com.number.entity.Wordage;
    import com.number.model.WordageModel;/**
     * 汉字的action
     * @version 1.0
     */
    @ActionBean(name = "/wordage")  // 这个地址可以在浏览器访问
    public class WordageAction extends BaseAction { private static final Logger log = Logger.getLogger(WordageAction.class);
    private WordageModel model = new WordageModel();
    private Wordage bean; /**
     * 分页列表(这个方法的url:http://你的IP:你的端口/你的工程名称/wordage/list.你配置的后缀)
     * @return
     */
    public Forward list() {
    pager = model.pager(bean, pageNo, pageSize);
    log.info(pager);
    //return null;// 返回null或"",action不做任何转发动作
    return Forward.create("/index.jsp");// 将要转发的url
    } /**
     * 这个实体会自动保存在request作用域中
     * @return
     */
    public Wordage getBean() {
    return bean;
    } /**
     * 页面提交时,自动封装数据到实体中
     * @param bean
     */
    public void setBean(Wordage bean) {
    this.bean = bean;
    }}ajax的代码:package com.number.control.ajax;import java.util.List;
    import org.apache.commons.mvc.annotation.AjaxBean;
    import org.apache.commons.mvc.annotation.AjaxMethod;
    import org.apache.commons.mvc.entity.Pager;
    import org.apache.commons.mvc.web.BaseAjax;
    import org.apache.log4j.Logger;
    import com.number.entity.Wordage;
    import com.number.model.WordageModel;/**
     * 汉字的ajax
     * @version 1.0
     */
    @AjaxBean(name = "wordageAjax")  // 这个名称可以在页面生成javascript对象
    public class WordageAjax extends BaseAjax { private static final Logger log = Logger.getLogger(WordageAjax.class);
    private WordageModel model = new WordageModel(); /**
     * 无刷新分页列表, 在页面引入两个js文件即可使用:
     * <script type="text/javascript" src="/你的工程名称/org/apache/commons/mvc/res/js/public.js.你配置的后缀"></script>
     * <script type="text/javascript" src="/你的工程名称/commons/mvc/ajax/wordageAjax.js.你配置的后缀"></script>
     * 页面就这样写:wordageAjax.list("{charm:''}", 1, 20, function(result) {alert(result.list.length);});
     * @param bean
     * @param pageNo
     * @param pageSize
     * @return
     */
    @AjaxMethod  // 加上这个注解,页面的js可以直接调用这个方法,让js和java合为一体
    public Pager<Wordage> list(Wordage bean, Integer pageNo, Integer pageSize) {
    Pager<Wordage> pager = model.pager(bean, pageNo, pageSize);
    log.info(pager);
    return pager;
    }

    /**
     * 所有声母
     * @return
     */
    @AjaxMethod
    public List<String> getAllCoice() {
    return model.getAllCoice();
    }

    /**
     * 所有韵母
     * @return
     */
    @AjaxMethod
    public List<String> getAllCharm() {
    return model.getAllCharm();
    }}
      

  9.   

    apache的mvc注解比较简洁,只需要一个包和一个配置文件就能贯穿整个web工程,
    所有注释和异常信息都是中文的,符合国人的编程习惯,并且保证你不会出现404,
    我们现在都用这个,struts只能放在尘封的记忆中了。
      

  10.   

    该action 包命名是否符合struts2的规范  包应该叫action.. 等
      

  11.   

    HTTP Status 404 - There is no Action mapped for namespace [/system] and action name [hello] associated with context path [/struts2_demo].
    namespace [/system]  说明你的路径输入错误了 应该是 http://localhost:8080/项目名称/test/hello.action  你的namespace应该是/test