簡體   English   中英

使用JSF 1.2將屬性或參數從js / jsp傳遞到支持bean

[英]Passing attributes or param from js/jsp to backing bean with JSF 1.2

我正在為Oracle數據庫編寫一個非常簡單的前端。 它基於JSF 1.2,jsp,並部署在glassfish-ee-2.1上,並使用NetBeans 6.5.1開發。

是的,我知道這是2012年。

必須閱讀內容,也許更新它,然后將其保存回數據庫。

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

我正在使用(這是必需的嗎?!)基於jquery的msDropdown組件( 官方頁面 ),它允許使用帶有圖像和文本的漂亮下拉菜單。

但是,由於該元素不是標准元素,因此我沒有找到使用綁定屬性從支持bean訪問它的方法。

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

在JSP中,msDropDown的定義如下:

<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),2006年。

msDropdown通過檢查常規的html選擇來工作。 但是,如果您實際上在jsf文檔中插入了html select,則將不會與jsf生命周期進行任何集成。

解決方案是使用實際的jsf組件,而不是selectOneMenu 它會完全集成到生命周期中,這意味着您無需任何黑客就可以獲取價值。 它將像您頁面上的任何其他組件一樣提交。

selectOneMenu呈現為類似於客戶端上的常規html select,這意味着您可以將其與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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM