m*****r 发帖数: 298 | 1 jsp半入门,ejb盲,遇到老系统。
每个jsp页面分几块,每块显示几个人的信息,这一组人存在collection里。
jsp1显示成人和孩子,jsp2只显示成人。
jsp1
… />
jsp2
我的任务要把jsp1改成只显示孩子,不知道怎么修改或者新建一个collection。
jsp1里面的people_otherStateBenefitQuestion来自于同文件内的scriptlet
<% INDIVIDUAL_Custom_Collection people_otherStateBenefitQuestion = (
INDIVIDUAL_Custom_Collection)request.getAttribute("PEOPLE_
otherStateBenefitQuestion"); %>
AFBIndividualsTag.java控制ap的jstl,里面有一个StringBuffer buildHTML()生成最
终页面,本身及父类也没有doTag()。buildHTML可以判断element是孩子还是成人,但
只是头像不同,全部都要显示。问题是数据源collection里面的人是哪里来的。
HouseHoldInfoEJBBean.java 包含下列代码(不连续):
Map request = txnBean.getRequest();
Map pageCollection = txnBean.getPageCollection();
Map beforeCollection = (Map) session.get(FwConstants.BEFORE_COLLECTION);
pageCollection.put("PEOPLE_otherStateBenefitQuestion", beforeCollection.get
("PEOPLE_otherStateBenefitQuestion"));
搜了整个项目,好像没有别的文件包含PEOPLE_otherStateBenefitQuestion这个字符串
了。 |
z*******3 发帖数: 13709 | 2 jsp1是什么?是最后显示出来的view吗?
也就是最后结果是用jsp1显示,之前有其他的什么查询之类的jsp?
我大概猜测是这样
people_otherStateBenefitQuestion是request里面一个attribute
从request中get这个attribute
那么在发送这个request的时候,肯定有一个地方把这个request给set进去
如果是mvc结构的话,到view一般是最后一步了
一般经过ejb处理之后才到view,所以从ejb中找这个collection
然后从你给出的代码看,它是从session中取得这个collection对象
然后放到pageCollection里面去
我的猜测就是这个pageCollection对应着request
而put到这个pageCollection里面去的所有对象,最后都会变成request的attribute
比如我这么做
pageCollection.put("zhaoce","mitbbs");
那么当我在jsp上写
<%=request.getAttribute("zhaoce")%>
就会显示mitbbs
你可以试一下
关键是你的web框架是什么?查找相关的文档会容易很多,或者问老员工,一句话的事
搞不好这是你们自己写的web框架 |
m*****r 发帖数: 298 | 3 jsp1就是源码,一个tag,最后会变成一堆html显示一组人。
我没有搜到setAttribute方法。
我怀疑没有mvc框架,大量scriptlet,架构恐怕很烂。 明天我把别人给我画的图发上来。
【在 z*******3 的大作中提到】![](/moin_static193/solenoid/img/up.png) : jsp1是什么?是最后显示出来的view吗? : 也就是最后结果是用jsp1显示,之前有其他的什么查询之类的jsp? : 我大概猜测是这样 : people_otherStateBenefitQuestion是request里面一个attribute : 从request中get这个attribute : 那么在发送这个request的时候,肯定有一个地方把这个request给set进去 : 如果是mvc结构的话,到view一般是最后一步了 : 一般经过ejb处理之后才到view,所以从ejb中找这个collection : 然后从你给出的代码看,它是从session中取得这个collection对象 : 然后放到pageCollection里面去
|
z*******3 发帖数: 13709 | 4 你不能跑起来改改试试?
来。
【在 m*****r 的大作中提到】![](/moin_static193/solenoid/img/up.png) : jsp1就是源码,一个tag,最后会变成一堆html显示一组人。 : 我没有搜到setAttribute方法。 : 我怀疑没有mvc框架,大量scriptlet,架构恐怕很烂。 明天我把别人给我画的图发上来。
|
a****i 发帖数: 1182 | 5 Map pageCollection = txnBean.getPageCollection();
Map beforeCollection = (Map) session.get(FwConstants.BEFORE_COLLECTION);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
你找一下什么地方这个session被赋值的,查找FwConstants.BEFORE_COLLECTION
是怎么产生这个值的
pageCollection.put("PEOPLE_otherStateBenefitQuestion", beforeCollection.get
("PEOPLE_otherStateBenefitQuestion"));
【在 m*****r 的大作中提到】![](/moin_static193/solenoid/img/up.png) : jsp半入门,ejb盲,遇到老系统。 : 每个jsp页面分几块,每块显示几个人的信息,这一组人存在collection里。 : jsp1显示成人和孩子,jsp2只显示成人。 : jsp1 : : … /> : : jsp2 : : 我的任务要把jsp1改成只显示孩子,不知道怎么修改或者新建一个collection。
|
m*****r 发帖数: 298 | 6 本地环境有问题,还没有配置好
【在 z*******3 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 你不能跑起来改改试试? : : 来。
|
m*****r 发帖数: 298 | 7 There are over ten session.put(FwConstants.BEFORE_COLLECTION, xxxxxx) in
HouseHoldInfoEJBBean.java
Two of them are session.put(FwConstants.BEFORE_COLLECTION, txnBean.
getPageCollection()),
the others are session.put(FwConstants.BEFORE_COLLECTION, beforeColl).
get
【在 a****i 的大作中提到】![](/moin_static193/solenoid/img/up.png) : Map pageCollection = txnBean.getPageCollection(); : Map beforeCollection = (Map) session.get(FwConstants.BEFORE_COLLECTION); : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ : 你找一下什么地方这个session被赋值的,查找FwConstants.BEFORE_COLLECTION : 是怎么产生这个值的 : pageCollection.put("PEOPLE_otherStateBenefitQuestion", beforeCollection.get : ("PEOPLE_otherStateBenefitQuestion"));
|
m*****r 发帖数: 298 | 8 当时听的一知半解,完全纸上画,没有结合代码。
【在 z*******3 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 你不能跑起来改改试试? : : 来。
|
a****i 发帖数: 1182 | 9 肯定有个地方是
beforeCollection.put("PEOPLE_otherStateBenefitQuestion", xxx)
仔细找就好,要不然就问同事
在网上问没什么用,又没有完全的代码
【在 m*****r 的大作中提到】![](/moin_static193/solenoid/img/up.png) : There are over ten session.put(FwConstants.BEFORE_COLLECTION, xxxxxx) in : HouseHoldInfoEJBBean.java : Two of them are session.put(FwConstants.BEFORE_COLLECTION, txnBean. : getPageCollection()), : the others are session.put(FwConstants.BEFORE_COLLECTION, beforeColl). : : get
|
m*****r 发帖数: 298 | 10
【在 a****i 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 肯定有个地方是 : beforeCollection.put("PEOPLE_otherStateBenefitQuestion", xxx) : 仔细找就好,要不然就问同事 : 在网上问没什么用,又没有完全的代码
|
a****i 发帖数: 1182 | 11 呃,无语啊,你多问问同事才对
变量名可能会不一样啊,也许是 bcoll,也许是 put ()
但是既然取这个值,就有地方设
【在 m*****r 的大作中提到】![](/moin_static193/solenoid/img/up.png)
|
z*******3 发帖数: 13709 | 12 我估计也是
这种legacy code
要想一下子理解,不是那么容易
毕竟不规范
你这种问题问一下其他老员工
也就是一分钟的事
远比你自己在这里问然后找要容易得多
j2ee就是这样,层与层之间的关联
没有你想得那么容易
往往这些关联是用框架来实现
也就是你光看代码,你是找不到的
你得去看配置文件,所以就很不直观
所以这就是为什么我长期强调规范代码
因为规范的代码查起来有官方文档的帮忙
不规范的代码,除了公司自己的人知道,就没有人知道了
不过你这个还好,图画出来我大概明白了
层次是这样
jsp->servlet(封装pojo,也就是实体,set/get方法)->ejb->bo?->*dao(这里应该是用
上了虚拟类的继承)->db
够原始的系统,ejb1.x版本时候的事,struts什么都没用上
好处是对你基础的提高很有帮助
你断掉的那个逻辑是在servlet到ejb之间
看ejb的配置文件,还有就是这个servlet应该有一个总的dispatcher
就是总的派发servlet的类,找找这个类,大概读一读代码
也许能够领悟,不过这非常不容易,我一般遇到这种就直接问了
问同事会快很多,没事拍拍老员工马屁也蛮好,对你没有坏处
还是问吧,这个结构还是很正规的,没有很奇芭的东西
就是结构老了点,层次还是比较清晰的
【在 m*****r 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 当时听的一知半解,完全纸上画,没有结合代码。
|
m*****r 发帖数: 298 | 13 谢谢指教。看到“我一般遇到这种就直接问了”我觉得我自己再看也白搭了,牛人尚且
如此。
带我这人,也不是从头开始做的。
以前还接触过更老的技术,可能比struts还老。
【在 z*******3 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 我估计也是 : 这种legacy code : 要想一下子理解,不是那么容易 : 毕竟不规范 : 你这种问题问一下其他老员工 : 也就是一分钟的事 : 远比你自己在这里问然后找要容易得多 : j2ee就是这样,层与层之间的关联 : 没有你想得那么容易 : 往往这些关联是用框架来实现
|