Seam 异常 PropertyNotFoundException Target Unreachable, identifier resolved to null

本文介绍了一个关于A4J中AJAX请求乱序导致的PropertyNotFoundExceptionTargetUnreachable异常问题及其解决方案。通过设置eventsQueue属性来确保AJAX请求有序处理,并调整Seam框架中的concurrent-request-timeout参数来解决非AJAX请求与AJAX请求之间的冲突。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我在使用一个表单,保存数据的时候,在填写表单,和保存的时候出现异常 :

PropertyNotFoundException Target Unreachable, identifier resolved to null

这个很奇怪,因为在EL中引用的对像肯定是存在的,而且是对话作用域的,而且每次说不存在的又不是固定的对象。后来在各个edit中切换的快(我的输入域中有A4j supper),就会出这个导常。
后来在Seam in Action中找到了答案,和解决办法:

原因: 在A4j中,ajax请求是乱序到达服务器的,这样会造成,各AJAX请求及AJAX请求和非AJAX请求之间争夺对话的控制权,当多个AJAX请及非AJAX请求同时到达服务器时后到的请求将无法得到对话的控制权只到request超时,这个后到的请求就会抛出这个异常。

解决:为A4j加入eventsQueue 属性,此属性可让A4j请求加入一个对列,以避免发生多个请求同时到达服务器,这样可以解决多个AJAX请及之间争夺对话的控制权的问题,列如:
<a:support event="onblur" reRender="commentField" bypassUpdates="true" ajaxSingle="true" eventsQueue="foo"/> 
对于AJAX请求和非AJAX请求之间争夺对话的控制权的问题,可设置请求超时时间来解决,在Seam中 :
<core:manager concurrent-request-timeout="500" .../>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值