2013-12-09 71 views
0

我在使用ADF技術和Jdeveloper 11.1.2.3作爲IDE構建應用程序。在某些jspx頁面的應用程序中,我有<OBJECT>標籤,用戶可以在其中插入特殊類型的輸入(數字簽名)。該標籤數據可在jspx頁面通過Javascript功能訪問。問題是:如何通過Java類BackingBean(NOT Servlet)訪問Javascript函數(其中包含數字簽名數據)中定義的變量。Javascript和Java通信

這是<OBJECT>標籤和調用Javascript功能的按鈕: 注:我敢肯定,Javascript保持所需要的數據(數字簽名對象),我有這不是所有的功能。

<OBJECT classid="clsid:69A40DA3-4D42-11D0-86B0-0000C025864A" height="75" border="2" id="SigPlus1" 
        name="SigPlus1" style="HEIGHT: 180px; WIDTH: 320px; LEFT: 0px; TOP: 0px;"> 
       <param name="_Version" value="131095"/> 
       <param name="_ExtentX" value="4842"/> 
       <param name="_ExtentY" value="1323"/> 
       <param name="_StockProps" value="0"/> 
      </OBJECT> 

<INPUT id="submit1" name="Save" type="submit" value="Save" onclick="OnSave()"/> 

我嘗試以下方法,但它不工作:

我加了一個隱藏的申請頁面等,並結合hidden input的價值屬性的屬性在java BackingBean如下:

<input type="hidden" id="passSignToBean" value="${SRdetailsBean.sigObj}"/> 

,這是Javascript函數,將改變輸入日提交值:

​​

我的想法是,當用戶點擊提交按鈕Javascript函數OnSave()將被調用並更改hidden input標記的值。因爲,我將這個輸入提交給java BacknigBean(我假設)中的某個屬性,應該更新bean中的屬性以匹配hidden input提交的新值。

重要通知: 我沒有使用HttpServlet。 我沒有使用java applet

當我嘗試這種方法時,我得到NullPointerException當我試圖使用java BackingBean屬性。

回答

0

首先,你不應該混合使用HTML和ADF。
如果您需要通過javascript調用服務器端方法,則必須對服務器事件進行排隊。
檢查上述文件的樣品: http://jdevadf.oracle.com/adf-richclient-demo/docs/tagdoc/af_serverListener.html

Basicaly,您生成您的支持bean與聽衆捕捉和傳遞您的變量作爲參數傳遞給該事件服務器的事件。

還有你怎麼稱呼從豆JavaScript方法:

FacesContext fctx = FacesContext.getCurrentInstance(); 
ExtendedRenderKitService service = Service.getRenderKitService(fctx, extendedRenderKitService.class); 
service.addScript(fctx, "<any javascript to be invoked>"); 
+0

非常感謝Nagh,這正是我需要的。但是,我怎樣才能做到這一點;也就是說,我怎樣才能將數據從Java方法傳遞給Javascript函數。 – Salman

+0

我已更新答案。 – Nagh