在 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_0。然后错误抱怨 UserDataPage 缺少网格。
我不能直接从用户列表(第一页)转到 UserDetailsPage,因为 UserDetailsPage 要求重定向来自 UserDataPage。我不能摆脱这个要求。