日期:2014-05-19  浏览次数:20786 次

struts2.0.9利用ajax验证表单数据时,页面无法正常跳转问题,急!
使用struts2.0.9+spring+hibernate+ajax

很简单的一个测试例子,即简单的CRUD例子。当我没有采用theme="ajax" validate="true"验证表单数据时,提交表单,若数据合法则页面自动跳转到数据列表页面。可是当我使用ajax客户端验证时,验证能正常运行,可是当输入的数据都合法后,点击“提交”时,页面一点反应都没有,但查看数据库发现数据已经保存了。仅仅是页面不跳转。

我自己有一个疑问,就是我查看表单编辑页面的HTML代码,发觉在我引用<s:head theme="ajax"/>处导入了很多DOJO的JS库,其JS文件在我的项目下并不存在。HTML代码部分如下:
HTML code

<script type="text/javascript">
    // Dojo configuration
    djConfig = {
        baseRelativePath: "/Struts2_Ioc/struts/dojo",
        isDebug: false,
        bindEncoding: "GBK",
        debugAtAllCosts: true // not needed, but allows the Venkman debugger to work with the includes
    };
</script>
<script type="text/javascript"
        src="/Struts2_Ioc/struts/dojo/dojo.js"></script>
<script type="text/javascript"
        src="/Struts2_Ioc/struts/simple/dojoRequire.js"></script>
<script type="text/javascript"
        src="/Struts2_Ioc/struts/ajax/dojoRequire.js"></script>
<script type="text/javascript"
        src="/Struts2_Ioc/struts/CommonFunctions.js"></script>



注:我的项目上下文为Struts2_Ioc,但是项目底下并没有/struts/目录,也没有/struts/dojo/等目录,这些DOJO的JS库我也不知道该如何导入。

现在问题如下:这些JS库缺失是否就是问题所在?如果是,我该如何导入(我查看了DOJO的官方网站并下载了好几个版本的DOJO发现其目录文件结构都跟这个HTML文件里面的JS库文件结构不一致)?

同时是否跟struts.xml文件有关系?我把部分代码贴出来:
XML code

                <action name="List" class="bookAction" method="list">
            <result>List.jsp</result>
        </action>
        <action name="Edit" class="bookAction" method="load">
            <result>Edit.jsp</result>
        </action>
        <action name="Store" class="bookAction" method="store">    
            <result name="input">Edit.jsp</result>        
            <result type="redirect">List.action</result>
        </action>
        <action name="Remove" class="bookAction" method="remove">
            <result type="redirect">List.action</result>
        </action>


注:其中class我使用了spring配置文件applicationContext.xml里面定义的ID,这些配置应该没有问题,唯一我有疑虑的是:是否由于页面有错误输出,所以在
XML code

                <action name="Store" class="bookAction" method="store">    
            <result name="input">Edit.jsp</result>        
            <result type="redirect">List.action</result>
        </action>



这里面redirect是有错误的呢?可是我把它换成name="success"也一样是不行的。

我是个新手,请您帮帮我,谢谢!


------解决方案--------------------
注:我的项目上下文为Struts2_Ioc,但是项目底下并没有/struts/目录,也没有/struts/dojo/等目录,这些DOJO的JS库我也不知道该如何导入。
===========================================
这些东西在struts2引入的包里, 不需要专门引入
------解决方案--------------------
第一,你最好看完文档再提问!
Struts2的js是通过jar包的静态文件输出完成的,不需要你的项目目录下有/struts2目录,这个你可以在default.properties中的struts.serve.static=true中设置!

第二,如果页面无反应,但却提交了,说明你开启了Ajax提交,Struts2的ajax表单不仅可以使用DWR1.x版本进行Ajax校验,也可以进行无刷新提交!由于你的JSP的表单代码没有写上来,我无法判断你是哪里写错了!
------解决方案--------------------
楼主,能说说怎么解决吗?我还没解决那!我也碰到类似的问题!