【发布时间】:2013-08-12 15:25:24
【问题描述】:
在 Tapestry 中,我将用户从页面 A 重定向到页面 B,有时他在页面 B 显示之前被重定向到页面 C。这会导致以下 javascript 异常显示为页面上出现的红色弹出窗口:
Exception invoking function Tapestry.Initializer.activate with parameters ["example"]: TypeError: $(...) is null
列为 null 的所有元素都来自页面 B,我不想或不打算显示。在这种情况下,我无法将用户从页面 A 直接重定向到页面 C。
我需要在 Tapestry 中自己处理这些 javascript 异常或隐藏它们的方法,或者需要适当的 Tapestry 技术在页面之间重定向而不会出现这些错误。目前我正在通过@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_0。然后错误抱怨 UserDataPage 缺少网格。
我不能直接从用户列表(第一页)转到 UserDetailsPage,因为 UserDetailsPage 要求重定向来自 UserDataPage。我不能摆脱这个要求。
【问题讨论】:
-
始终发布您遇到问题的代码的相关部分。仅口头描述就使事情变得模糊并易于解释。
-
好了,我希望它能解决问题。
-
为什么不从第一页返回
UserDetailsPage实例?为什么要返回UserDataPage,然后在UserDataPage.setup()中重定向到UserDetailsPage?重定向两次对我来说没有意义。 -
我不能直接从用户列表(第一页)转到 UserDetailsPage,因为 UserDetailsPage 要求重定向来自 UserDataPage。我不能摆脱这个要求。这不是我的决定,我已经尝试过影响我的上级,但这是不行的。
标签: javascript exception tapestry