2012-11-29 68 views
1

我有一個簡單的應用程序,其中一個類和一個帶有一個computedField的xPage綁定到該類。我想將class getter的結果顯示爲一個bean。不起作用。 我的類看起來是這樣的:在xPages中使用Bean不起作用

package test.test; 

public class Test { 
    public Test() { 
    } 

    public String getTest() { 
     return "Test"; 
    } 
} 

SSJS在computedField:

var test = new test.test.Test(); 
return test.getTest(); 

錯誤是這樣的:

Error while executing JavaScript computed expression 
Script interpreter error, line=1, col=17: 'test' is undefined 

1: var test = new test.test.Test(); 

我失去了任何設置還是什麼? 在此先感謝,JiKra

編輯:如果我使用託管bean,問題是完全相同的。我的Designer/Eclipse IDE一定有問題。我會嘗試重新安裝它tomorow。編輯2:今天,我試圖在我的大學計算機中做同樣的事情,這是同樣的錯誤。所以,這個問題不在我的IDE中。我肯定錯過了什麼。我是否需要將任何外部庫安裝在服務器或IDE中?

+0

太多測試! – Naveen

+0

這只是爲了簡單。我以三次不同的包名和類名嘗試過它。還是一樣的錯誤。 – JiKra

+0

你的java類存儲在哪裏? Lib/ext jar,java元素? –

回答

2

好的,我做了以下操作。

1)創建一個新的Java類。

enter image description here

2)將在下面的代碼到類。

package test.test; 

public class Test implements java.io.Serializable { 

    public Test() { 
     super(); 
    } 

    public String getTest() { 
     return "Test"; 
    } 

} 

3)創建了以下源一個XPage:

<?xml version="1.0" encoding="UTF-8"?> 
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xe="http://www.ibm.com/xsp/coreex"> 
    <xp:text escape="true" id="computedField1"> 
     <xp:this.value><![CDATA[#{javascript:var t:test.test.Test = new  test.test.Test(); 

return t.getTest(); 
}]]></xp:this.value> 
    </xp:text> 
</xp:view> 

在瀏覽器中打開它,並得到了單詞 「測試」 出現。

將變量「t」更改爲「測試」,然後失敗。所以看起來變量名稱是問題。

[編輯]

根據您的使用8.5.2的評論,代碼/ Java功能並沒有直到的Notes/Domino 8.5.3到達。這就是爲什麼它不適合你。

+0

轉載ND9,所以我會SPR它 –

+2

SPR創建:SODY92JHMK。 –

+0

好吧,但它不是我的問題。上次我嘗試了var myBean = ...但它也失敗了。 – JiKra

0

當初始化你在SSJS Java類的代碼應該是這樣的:

var testObj:test.test.Test = new test.test.Test(); 
+0

仍然是相同的錯誤... – JiKra

+3

只是一個FYI,但「var testObj:test.test.Test」僅適用於SSJS編輯器提供類型,即使它不適用於自定義類 – keithstric

+0

@keithstric:+1 :) – Naveen

0

你忘了把新的聲明。

var test = new test.test.Test(); 
+0

不,我沒有。我只是忘了把它放在這裏。我的錯。即使有新的聲明,它也不起作用。同樣的錯誤... – JiKra

+0

因此,更新有問題的錯誤消息。 –

+0

完成:-)還有更多。請參閱Edit2。 – JiKra

1

您在SSJS(test)中的變量名稱與包名衝突。使用

var test1=new test.test.Test(); 

它將工作...

+0

對不起,但它根本不起作用。我嘗試了各種名稱,不同的應用程序和兩臺服務器最後我用var test1 = new johny.Money(); test1.getMyMoney();還是行不通。也許我的設計師有問題。 Tomorow,我會在不同的電腦上嘗試不同的電腦。 – JiKra

+0

我剛剛嘗試了test1的確切代碼,它工作。你有沒有嘗試清潔和重建? –

+0

很多次...--( – JiKra

1

可能建立的問題。確保你...

1)構建代碼,嘗試清理和構建。

2)有正確的構建路徑 - 你可以在偏好對話框中找到它。

3)可以定位Test.class文件,最好在Java透視圖的Navigator視圖中。

+0

1.試了很多次2.Java \ Build Path?3. Class文件位於WebContent \ WEB-INF \ classes \ test \ test \ Test.class – JiKra

0

不知道這是否是問題,但我認爲您必須在Bean中定義一個類型爲String的變量「test」,以便使用getTest()檢索它的值。

+0

不,他確實不綁定(甚至與綁定,它不會是一個問題),他只是在新實例上調用getTest() –

1

確保Java和XPage是在更改軟件包名稱後生成的。例如,添加一個print("new XPage")到SSJS和System.out.println("new Java")到Java。

我可以重現與您的代碼和8.5.3FP3設計器+服務器的問題。當我將軟件包名稱更改爲test.tes時,問題就消失了。

編輯:我一直使用變量名稱「t」,並且可以確認問題出現如果我將變量名稱更改爲「測試」,如Simon發現下面。也許Simon有不同的Desiger/Domino版本,因爲test.test.Test不適用於變量名稱爲「t」的我。

EDIT2:聽起來就像你正在使用8.5.3設計器8.5.2服務器。正如Simon所說,Code/Java是在8.5.3中引入的。可以在這裏找到編寫Java for 8.5.2的指令,例如:http://xpageswiki.com/web/youatnotes/wiki-xpages.nsf/dx/Work_with_Java