这是问题所在。我有一个editBox,服务器端的JavaScript试图通过一个名为Add的按钮的onClick事件来检索它的值。它一直工作,直到值中有空格,然后它什么都不检索。onClick事件的代码如下:
println("Button Clicked");
try{
var forkNumberInput:com.ibm.xsp.component.xp.XspInputText =
getComponent("forkNumberInput");
var forkNum = forkNumberInput.getValue();
viewScope.ForkNum = forkNum;
println(forkNum);
} catch(e){
println( Error in Add button: " + e.toString());
}当文本中有一个空格时,不会填充viewScope,也不会向服务器日志中写入任何内容,甚至不会写入“按下按钮”。服务器日志中未写入任何错误。
发布于 2017-08-24 23:24:11
如果没有打印"Button Clicked“,最有可能的原因是存在验证错误。添加一个Display Errors控件以确保不是这种情况。
发布于 2017-08-25 01:38:46
我赞同Paul关于添加错误控制的建议。除此之外:当你想做的只是获取值的时候,尽量避免使用getComponent()。扩展到XPages的JSF的思想是“数据绑定”。控件被绑定到某些数据源以获取它们的值,您可以与这些数据源进行交互。getComponent()是用来在你需要操作其他东西的时候使用的。
因此,您可以绑定您范围变量viewScope.forkNum控件,这样就完成了。然后,您的按钮从那里获取值,并执行它需要做的事情。
所以总而言之:控件需要绑定。数据存在于模型(而不是控件)中
发布于 2017-08-25 01:34:27
谢谢你,保罗--你把我引向了正确的方向。原来在Properties > data > validators下有一个validateConstraint。我移除了validateConstraint,它就开始工作了。当您将设计元素从一个自定义控件复制到另一个自定义控件时,就会发生这种情况。
https://stackoverflow.com/questions/45864926
复制相似问题