SSJS onClick 操作不会在 XPage 上触发
SSJS onClick action will not fire on XPage
我找到了this question,但是好像没有解决,我还有更多要补充的。
首先,链接的问题定义了我遇到的几乎相同的问题。
1. 我正在使用 ExtLib
中的应用程序布局控件
2.按钮在那个控件里面不在里面都没有关系
3. CSJS 动作会从按钮触发,SSJS 动作不会触发。
4. 没有错误
5. 浏览器/缓存无关紧要,因为服务器端操作不会触发。
看到链接的问题后,我查看了包视图中的本地文件,发现了一个异常情况,这让我想知道这是否可能是原因。我以前从未见过这样的文件,甚至还查看了我的其他 xpage 项目以确保确定。
此文件无法删除,点击后显示window表示该元素不存在。
有谁知道这个文件是什么,我该如何删除它,或者我的应用程序是否已损坏?
**更多信息**
以下代码段是从位于本地目录中的 XPage 的 java 文件中复制的。我觉得一切都很好。
private UIComponent createEventHandler(FacesContext context,
UIComponent parent, PageExpressionEvaluator evaluator) {
XspEventHandler result = new XspEventHandler();
String sourceId = "button2/xp:eventHandler[1]/xp:this.action[1]/text()";
MethodBinding action = evaluator.createMethodBinding(result,
"#{javascript:view.postScript(\"alert(\'server script fired!\')\");}",
null,null, sourceId);
result.setAction(action);
result.setSubmit(true);
result.setEvent("onclick");
result.setRefreshMode("complete");
return result;
}
编辑
将所有设计元素移动到一个新的 .nsf 中,这样文件就不再存在,这不会改变 SSJS onclick 操作未触发的问题。但是那个奇怪的文件不存在。
转换器/验证器是否失败?这可能会导致它在 Invoke Application 阶段之前跳过生命周期。要测试按钮是否实际工作,您还可以使用 "Do not validate or update data"。然后 SSJS 在 Apply Request Values 阶段运行。如果 SSJS 被触发(你不会在数据模型或组件中获得来自浏览器的最新数据),那么它是转换器或验证器失败的另一个好选择。
我找到了this question,但是好像没有解决,我还有更多要补充的。
首先,链接的问题定义了我遇到的几乎相同的问题。
1. 我正在使用 ExtLib
中的应用程序布局控件
2.按钮在那个控件里面不在里面都没有关系
3. CSJS 动作会从按钮触发,SSJS 动作不会触发。
4. 没有错误
5. 浏览器/缓存无关紧要,因为服务器端操作不会触发。
看到链接的问题后,我查看了包视图中的本地文件,发现了一个异常情况,这让我想知道这是否可能是原因。我以前从未见过这样的文件,甚至还查看了我的其他 xpage 项目以确保确定。
此文件无法删除,点击后显示window表示该元素不存在。
有谁知道这个文件是什么,我该如何删除它,或者我的应用程序是否已损坏?
**更多信息**
以下代码段是从位于本地目录中的 XPage 的 java 文件中复制的。我觉得一切都很好。
private UIComponent createEventHandler(FacesContext context,
UIComponent parent, PageExpressionEvaluator evaluator) {
XspEventHandler result = new XspEventHandler();
String sourceId = "button2/xp:eventHandler[1]/xp:this.action[1]/text()";
MethodBinding action = evaluator.createMethodBinding(result,
"#{javascript:view.postScript(\"alert(\'server script fired!\')\");}",
null,null, sourceId);
result.setAction(action);
result.setSubmit(true);
result.setEvent("onclick");
result.setRefreshMode("complete");
return result;
}
编辑
将所有设计元素移动到一个新的 .nsf 中,这样文件就不再存在,这不会改变 SSJS onclick 操作未触发的问题。但是那个奇怪的文件不存在。
转换器/验证器是否失败?这可能会导致它在 Invoke Application 阶段之前跳过生命周期。要测试按钮是否实际工作,您还可以使用 "Do not validate or update data"。然后 SSJS 在 Apply Request Values 阶段运行。如果 SSJS 被触发(你不会在数据模型或组件中获得来自浏览器的最新数据),那么它是转换器或验证器失败的另一个好选择。