iteye_19284 2010-06-03 11:30
浏览 274
已采纳

怎样做才能调用action中的方法,像调用service中的那样方便

最近在开发一个基于数据仓库的报表展示的项目,用的是SSH架构,项目已经开发的差不多了,最近客户又提出了动态首页的需求,具体是这样的:就是不同的用户有不同的报表阅读权限,那么他登陆系统后,首页上的报表也应该针对不同的权限有不同,所以就提出了动态首页的概念。

实现起来,我想到:专门开个动态首页的action,在里面遍历用户的菜单,随机选择几个链接,然后根据链接反射对应业务报表的action中的方法,得到其中的报表数据,再返回给动态首页的jsp。

于是问题来了:跳转业务报表的action中的方法是没有问题,可以实现,但是有去无回啊!!!一句mapping.findForward()就不知道跳到哪里去了,回不到原本调用它的地方了!唉~~~早知如此何必当初呢??我当时要是把封装报表数据的代码全部放到service中该有多好啊(现有的实现是在service中写sql查询数据,action中组装成jsp中要求的报表格式数据)!oh my God!现在杯具了!上百个报表的方法,难道一个个改过来???

  • 写回答

6条回答 默认 最新

  • w858323227 2010-06-04 11:10
    关注

    [quote]问题补充:

    w582875929 写道
    如果是新加页面的话原来的获得报表数据的action要做相关调整
    处理前台报表的action加个type属性,记录我需要返回的报表的result的name,再跳到指定的报表的相关数据处理action
    首先所有首页需要的报表的相关action的result都要多加个前台新页面的result
    如果你用的事struts1的话就麻烦点
    就要把所有 return resultName(报表页面的结果) 返回页面的地方加个if判断如果type为空的话则正常返回报表,如果不为空说明是前台请求则转向type所指的新前台页面。
    如果你用的struts2的话
    加个全局的拦截器,在action返回结果之后。判断type的值,如果为空返回action的result结果,如果不为空则返回type所指的result的结果

    杯具的是我的项目正好用的是struts1,框架从struts1迁移到struts2方便吗??

    其实需求是这样的,就是动态首页要同时显示四个报表Flash,也就是说要同时请求四个普通的action;我想这样做,就是动态首页的action接受到请求后转发给四个业务action去处理,然后action拦截器拦截,转发到动态首页的四个iframe,在iframe内做处理,只显示图表Flash,其他内容不显示,现在问题来了,怎样在动态action内同时转发到四个业务action呢??或者这样也可以:就是在动态action内同时请求四个业务action,并且它们都能返回到调用它的动态action内,然后再forward到动态首页,这样做有个好处,动态首页内就不需要iframe了。[/quote]

    你这样做就不能用跳转向action来做,一个action发4个请求(不会)。要么就在前台报表处理的action直接调用需要的4个报表的数据处理service然后跳首页也可以。
    或者
    你前台的action不做什么处理,就是取4个链接和4个链接的type封装一下再转前台。前台4个报表的iframe就取各自的链接和type去请求就可以了。

    struts1 迁移 struts2 建议不要,虽然都叫struts但两个框架的差别很大。个人觉得还是老老实实改result得了(这是我能想到的最简单的方法)。毕竟框架这种东西还是不要随便乱改的好,万一(后果很严重,老板很生气)。

    看看还有没有更好的方法 我只是个初级啊 水平有限

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办