2017-08-24 38 views
0

這是問題。我有一個編輯框,我試圖通過名爲Add的按鈕的onClick事件通過服務器端JavaScript檢索值。它的工作原理直到空間的價值,然後它沒有檢索任何東西。代號爲的onclick事件如下:EditBox fieldInput.getValue()和空格

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沒有得到填充,沒有數據被寫入到服務器日誌中甚至沒有「按鈕被點擊」的文字。沒有錯誤寫入服務器日誌。

回答

4

如果「Button Clicked」未打印,最有可能的原因是存在驗證錯誤。添加一個顯示錯誤控件,以確保不是這種情況。

0

謝謝保羅 - 你讓我走向了正確的方向。原來,在Properties> data> validators下有一個validateConstraint。我刪除了validateConstraint,它開始工作。當您將設計元素從一個自定義控件複製到另一個時,會發生這種情況。

+1

歡迎使用堆棧溢出。請接受Pauls答案,並在此添加您自己的答案,作爲對Pauls答案的評論,然後刪除您自己的答案) –

2

我第二保羅的建議添加錯誤控制。此外:儘量避免使用getComponent()當你想要做的就是抓住價值。 JSF擴展到XPages的想法是「數據綁定」。控件綁定到某些數據源以獲取其值,並與這些控件進行交互。 getComponent()是爲了在您需要操作其他任何東西時使用。

所以你會去綁定你的控制範圍變量viewScope.forkNum,你就完成了。你的按鈕然後從那裏獲取價值並做它需要做的事情。

所以總之:控件想要綁定。數據存在模型中(不是控件)