在挂毯中隐藏javascript异常
Hiding javascript exceptions in tapestry
在Tapestry中,我会将用户从页面a重定向到页面B,有时在显示页面B之前,他会被重定向到页面C。这导致以下javascript异常显示为红色弹出窗口,如下图所示:
Exception invoking function Tapestry.Initializer.activate with parameters ["example"]: TypeError: $(...) is null
所有列为null的元素都来自B页,我不想也不想显示它。在这种情况下,我无法直接将用户从页面A重定向到页面C。
我需要一种挂毯中的方法来自己处理这些javascript异常,或者隐藏它们以避免出现,或者使用适当的挂毯技术在页面之间重定向而不会出现这些错误。目前,我正在通过从@AfterRender函数启动重定向代码来模拟用户在页面之间的移动。
编辑:我已经在下面添加了代码的相关部分
在用户点击修改后的第一页上,我将他重定向到用户页面
@InjectPage
UserDataPage userDataPage;
@OnEvent(value = EventConstants.ACTION, component = "modify")
Object onModify(Long userToEdit) {
userDataPage.setUserId(userToEdit);
userDataPage.setEditDetails(true);
return userDataPage;
}
由于我真的需要编辑细节,UserDataPage这样做:
@InjectPage
UserDetailsPage userDetailsPage;
@AfterRender
Object setup() {
if(editDetails) {
userDetailsPage.setUserId(userToEdit);
return userDetailsPage;
}
}
当UserDetailsPage加载时,它显示有关UserDataPage中丢失的组件的错误(很明显,因为我不再使用UserDataPage)。在Firebug中,我看到脚本包含来自UserDataPage和UserDetailsPage的所有元素。例如,我在两个页面上都有grid元素,所以生成的挂毯脚本同时引用grid和自动重命名的grid_0。然后错误抱怨UserDataPage中缺少网格。
我不能直接从用户列表(第一页)转到UserDetailsPage,因为UserDetailsPpage要求重定向来自UserDataPage。我不能取消那个要求。
在页面之间重定向的正确方法是从事件处理程序返回页面类、页面名称或链接。
public Object onActionFromMyLink() {
return MyPage.class;
}
要隐藏挂毯客户端错误,可以覆盖javascript函数Tapestry.error
。
Tapestry.error = function() {
console.log(...);
}
但我认为问题出在你的代码中。
UPD:
在挂毯中进行导航的最佳方法是使用页面激活上下文
在PageA重定向到PageB,然后PageB重定向到PageC的情况下,我认为PageB不可能呈现(或导致任何javascript异常)。PageB将简单地返回302重定向响应,浏览器将直接进入PageC。
我猜PageC缺少onPassive()方法(或等效的@PageActivationContext注释),并且您的激活上下文在请求之间丢失。
http://jumpstart.doublenegative.com.au/jumpstart/examples/navigation/onactivateandonpassivate/3http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/PageActivationContext.html
- 点击谷歌结果页面时,HtmlUnit中出现JavaScript异常
- 未捕获的运行时JavaScript异常(Rhino)
- JavaScript异常:“;不成形”;在firefox浏览器上;XMLHttpRequest"chrome浏
- 未处理的 JavaScript 异常终止 MSAppHost/WWAHost.exe
- Javascript 异常 “参数名称: 索引” 使用 jquery
- JavaScript 异常处理未按预期工作
- 带有Javascript异常的HtmlDriver
- 通过抛出setTimeout()来处理JavaScript异常的任何问题
- 定义自定义JavaScript异常的较短方法
- 如何在 Sencha Touch 2 中将所有 JavaScript 异常写入文本文件
- 使用 foreach 函数时的 JavaScript 异常
- 带有 JavaScript 异常的 ajax:意外的输入结束
- 如何在使用迷你程序时收集有用的JavaScript异常
- 在onError事件中捕获一个javascript异常(webkit语音识别)
- javascript异常对象格式
- JavaScript异常”;调用的对象已与其客户端断开连接"打开(..)
- 在挂毯中隐藏javascript异常
- 为什么Javascript异常会使解释器处于不可预测的状态
- JavaScript异常:What'这是交易
- 使用selenium检查javascript异常