0

私は、Oracle データベース用の非常に単純なフロントエンドを作成しています。JSF 1.2、jsp に基づいており、glassfish-ee-2.1 にデプロイされ、NetBeans 6.5.1 で開発されています。

ええ、私はこれが2012年であることを知っています。

コンテンツを読み取り、おそらく更新して、データベースに保存する必要があります。

テキストベースの要素ではうまく機能します。UI 要素にバインディング属性を追加し、Bean からそれらにアクセスして、さまざまなテキストフィールドなどの値を取得できます。

私は (これは要件ですか?!) msDropdown コンポーネント (公式ページ) を使用しています。これは、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 に渡しますか?

ご協力いただきありがとうございます。さらにコードが必要な場合はお知らせください。

オリ 2006./.

4

1 に答える 1

0

msDropdown は、通常の html 選択をオーバーホールすることによって機能します。しかし、jsf ドキュメントに実際に html select を挿入すると、jsf ライフサイクルとの統合は行われません。

解決策は、代わりに実際の jsf コンポーネントであるselectOneMenuを使用することです。ライフサイクルに完全に統合されます。つまり、値を取得するためのハックは必要ありません。ページ上の他のコンポーネントと同様に送信されます。

クライアント側での通常の html 選択のselectOneMenuようにレンダリングされます。つまり、msDropDown を使用できます。唯一の問題は、コンポーネントの ID を取得することです。代わりにa を使用することをお勧めし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>
于 2012-11-29T09:30:53.583 に答える