posts - 43,comments - 75,trackbacks - 0

一、           问题描述:

1.         技术使用Ext2.0 struts2.0

2.         在一个form表单中,有一个参数为url,这个url是维护在数据库中的,代表一个业务数据显示的页面,当用户选择此业务进行处理时,就需要跳转到此业务类型的页面进行显示,同时还需要传输过去一些数据;由于传输的数据量也是不定的,可能会超过1024,所以使用javaScript window.location 进行跳转,参数传递可能有问题,所以需要更改为post的方式将数据传递过去。

二、           Ext2.0 form 简介

Ext 中的form表单提交,默认的情况下为ajax方式,也就是说当你点击formsubmit按钮时,页面不进行跳转,只是返回处理结果(成功或者失败)。

但是Ext 还提供了非ajax的方式提交,只是需要额外的配置:

onSubmit : Ext.emptyFn,

submit : function() {

submitForm.getForm().getEl().dom.method = 'post';

submitForm.getForm().getEl().dom.action = rootPath                                                                                                             + "elecbill/common/unTask_goBusiPage.action";

submitForm.getForm().getEl().dom.submit();

}

在上面的配置中蓝色的部分就是form表单的非ajax提交方式,然后再指定其数据传输方式使用‘post’方式。

三、           Struts2Chain Result介绍

struts2中配置请求的跳转,都是在struts.xml中指定action<result>节点,默认我们都是跳转到×××.jsp页面,但是有时候我们要跳转到其他人已经写好的action中进行处理,这时候就需要用到 Chain ResultChain Result的配置如下:

<package name="public" extends="webwork-default">

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

        <result type="chain">

            <param name="actionName">dashboard</param>

            <param name="namespace">/secure</param>

        </result>

    </action>

</package>

<package name="secure" extends="webwork-default" namespace="/secure">

    <action name="dashboard" class="...">

        <result>dashboard.jsp</result>

    </action>

</package>

注意蓝色部分,就是表明login的跳转将使用 /secure下的dashboardaction进行处理,最终将跳转到dashboard.jsp页面

四、           问题解决方案

1.        通过上面介绍的Ext form的非ajax方式和struts2Chain Result的处理方式。

2.        我们先设计一个业务跳转“中转站”,此中转站的功能主要是接收用户选择相应的业务处理之后,根据参数中的url,跳转到对应的业务显示页面中。

3.        Ext中的form表单配置为非Ajax方式,action指向“中转站”的action

submitForm.getForm().getEl().dom.action = rootPath   + "elecbill/common/unTask_goBusiPage.action"

4.         然后在中转站中解析传递的url参数,将namespace 的名称和action的名称取出并且保存为String actionName  Sting nameSpace 

struts.xml文件中配置如下:

<result name="goBusiPage" type="chain">

         <param name="actionName">${actionName}</param>

         <param name="namespace">${namespace}</param>

</result>

这样就可以就实现了动态跳转了!

posted on 2010-07-12 11:33 梦源 阅读(2098) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: