2012-11-29 36 views
0

我正在爲Oracle數據庫編寫一個非常簡單的前端。它基於JSF 1.2,jsp,並部署在glassfish-ee-2.1上,並使用NetBeans 6.5.1進行開發。從js/jsp傳遞屬性或參數到支持JSF 1.2的bean

是的,我知道這是2012年

一個必須閱讀的內容,也許更新,並將其保存回數據庫。

它適用於基於文本的元素。我添加了綁定屬性到我的UI元素,我可以從bean訪問它們以檢索各種文本字段的值等。

我正在使用(這是一個要求?!)msDropdown組件(official page),基於jQuery的,它允許有一個很好的下拉菜單與圖像和文字。

因爲這個元素不是標準的,但我沒有找到一種方法來使用綁定屬性來訪問它的形式後臺bean。

這意味着我無法在頁面加載時設置文本,就像我可以爲文本元素一樣,另外,在後臺bean中處理提交時,我無法獲取所選組件的值。

的msDropDown這樣定義的JSP:

<webuijsf:markup> 
    <select id="status" name="status" style="left: 150px; top: 62px; width:100px"> 
     <option data-description="" data-image="base_3.gif" value=""></option> 
     <option data-description="" data-image="base_0.gif" value="0"></option> 
     <option data-description="" data-image="base_1.gif" value="1"></option> 
     <option data-description="" data-image="base_2.gif" value="2"></option> 
    </select> 
</webuijsf:markup> 

我創建一個保存我的下拉列表中,以後訪問它的價值一個js變量。

<webuijsf:script> 
    var oHandler1 = $("#status").msDropdown().data("dd"); 
    var index = oHandler1.selectedIndex; 
</webuijsf:script> 

然後我試圖將其變量傳遞給我的支持bean是這樣的:

<webuijsf:button actionListenerExpression="#{editApplication.submitUpdate}" actionExpression="#{editApplication.update_action}" id="update" 
            style="height: 24px; left: 623px; top: 408px; position: absolute; width: 72px" text="Update"> 
    <f:attribute name="currentIndex" value="#{currentRow.value['APPNAME']}"/> 
    <f:attribute name="currentStatus" value="<%=index%>"/> 
</webuijsf:button> 

但我總是得到錯誤已經報道,<可能無法在一個值來使用。

任何想法如何才能從bean訪問該特殊下拉菜單?或者將它的價值傳遞給bean呢?

非常感謝您的幫助,並讓我知道如果您需要更多的代碼!

Oli from 2006./。

回答

0

msDropdown通過檢查正常的html選項來工作。但是如果你實際上在你的jsf文檔中插入了一個html選項,你將不會與jsf生命週期進行任何整合。

解決方法是使用實​​際的jsf組件,代替selectOneMenu。它將在生命週期中完全整合,這意味着你不需要任何黑客來檢索價值。它會像您網頁上的任何其他組件一樣提交。

selectOneMenu呈現像客戶端的普通html選擇,這意味着您可以使用它與msDropDown。唯一的困難是獲取組件的ID。我建議改用styleClass。它會更容易。

<h:selectOneMenu id="status" styleClass="statusSelect" style="left: 150px; top: 62px; width:100px"> 
    <f:selectItem itemValue=""></option> 
    <f:selectItem itemValue="0"></option> 
    <f:selectItem itemValue="1"></option> 
    <f:selectItem itemValue="2"></option> 
</h:selectOneMenu> 

<webuijsf:script> 
    //setup metadata (images and such) 
    var $select = $('.statusSelect'); 
    var children = $select.children('option'); 
    $(children[0]).data('image','base0.gif'); 
    //... and so on to add your metadata 

    var oHandler1 = $select.msDropdown().data("dd"); 
    var index = oHandler1.selectedIndex; 
</webuijsf:script> 
+0

感謝您的回答。經過大量的擺弄之後,我設法讓組件顯示,但是隻有在我刪除了selectOneMenu中的id標籤之後。但是,我在netbeans的Design選項卡中看不到該元素,所以我無法添加允許我在Bean中獲取值的綁定屬性。我會繼續尋找一種方法... –

+0

因爲我沒有身份證,我不能以某種形式使用它。 *猛撞頭硬*但沒有出來;) –

+0

它應該與工作與編號以及雖然。奇怪的是,它不會沒有顯示。至於設計選項卡;如果你的工具阻止你做你的工作,改變工具:) –