错误,Banq大哥救命啊

06-07-05 yalongxiao
我自己的Action,

extends struts的Action类。

类中用jdon的WebAppUtil.getService("service",request);

但是在同一个IE,只有第一次点击这个链接的时候才会执行。以后点击就不会执行了。

但是新开一个IE,再点击又能执行。

怎么解决啊?

banq
2006-07-06 15:04
不会吧,你直接将连接的地址放在IE地址栏中访问看看。

yalongxiao
2006-07-06 15:36
真的啊。

只有在第一次点击连接的时候才会执行,再后再怎么点也没用了。

但是用右键在新窗口中打开其它任何连接以后,再点这个连接又有效了。

把本连接在新窗口中打开也会执行。

yalongxiao
2006-07-06 16:08
还有缓存问题。

设置Model的setModified,setCacheble属性。

在哪一层设置?在Model类上吗?

我的一个Model类覆盖父类,设置setModified=true后,列表显示时很慢,每一次都不重新读取,不管我是否更新了Model。

设置setCacheble=false后,列表显示只有第一个Model才会有更改。

比如说数据库中有10条记录查询显示出来,当我更新数据库后,只有第一个Model类才会被更新和数据库同步,而其它的类没有一点改变。

怎么样才能让所有的都同步数据库呢?

banq
2006-07-07 17:08
>设置Model的setModified,setCacheble属性

这个不能轻易使用它,如果你不能完全掌控你的Model设计的话,使用这个两个属性会导致一些复杂问题出现。

>我的一个Model类覆盖父类

如果你的一个Model对象发生修改变动,你只需要通过modelManager.removeCache方法将其从缓存中去除即可。

如果这个Model对象变动需要影响其父Model对象,那么这时你必须搞清楚:是不是影响父Model对象的状态了?

按照DDD(领域驱动设计理论),一个Model对象分为两种性质:实体自己内容;对象状态(被称为Value Object)。

所以,在大部分情况下,答案应该是影响父Model对象的状态了,这时你只要更新父Model的状态对象即可。

以JiveJdon3中ForumThread和ForumMessage为例子,它们是父子关系,当ForumMessage发生CRUD之后,该主题线索中的最后一个贴的属性就发生了一些变化,所以,ForumMessage发生变化后,实际是影响了ForumThread的状态对象ForumThreadState对象。

目前,JF的setModified,setCacheble属性没有包含父子关系联动功能,也就是说,如果子对象发生更新,我只要设置子对象的setModified为真,这样,其父对象应该也得知,这样缓存机制目前没有,好像JBossCache有,但是因为JF框架是结合DDD设计的,所以,不但实现机制上要简洁快;而且在建模理论上要有可行性。正在研究中。

猜你喜欢