0

JQueryを使用して要素を(前後に)移動する2つのリストボックスを選択します。これが私のJQueryコードです。

<script type="text/javascript">

$(document).ready(function() {
    alert('inside function');
    $('#testForm\\:button_add').click(function(e) {
    var selectedOpts = $("#testForm\\:select_from option:selected");
    if (selectedOpts.length == 0) {
    alert("Nothing to move.");
    e.preventDefault();
    }
    $('#testForm\\:select_to').append($(selectedOpts).clone());
    $(selectedOpts).remove();
    e.preventDefault();
    });
    $('#testForm\\:button_remove').click(function(e) {
    var selectedOpts = $("#testForm\\:select_to option:selected");
    if (selectedOpts.length == 0) {
    alert("Nothing to move.");
    e.preventDefault();
    }                                               
    $('#testForm\\:select_from').append($(selectedOpts).clone());
    $(selectedOpts).remove();
    e.preventDefault();
    });
    });

</script>

そして、これが私のJSFコードに従います。

<td width="40%">
    <h:selectManyListbox value="#{testListBox.selectManyOptions}" id="select_from" size="5" >

    <f:selectItems value="#{testListBox.selectedOptions}" />
</h:selectManyListbox>
</td>
<td></td>
<td width="40%">
    <h:commandButton value="To" id="button_add"/><br/>
    <h:commandButton value="From" id="button_remove"/>
</td>
<td></td>
<td>
    <h:selectManyListbox id="select_to" size="5"
                        value="#{testListBox.selectedItems}">
    <f:selectItems />
</h:selectManyListbox>
</td> 
<td></td>

そして、ページBeanで、対応するバインディング変数をそれぞれのゲッター/セッターで以下のように宣言しました。

private Map<String, Object> selectedOptions;
private Map<String, Object> selectManyOptions;

private List<SelectItem> selectItems = new ArrayList<SelectItem>();
private List<String> selectedItems;

私のページを送信しているときに、エラーが発生しました。「ターゲットモデルタイプはコレクションまたは配列ではありません」ナビゲーションをブロックしているため、誰かが提案できますか?-Vamsi

4

2 に答える 2

2

Mapの代わりに、CollectionまたはObject[]現在valueを使用しているため、具体的な問題が発生します<h:selectManyListbox>Mapそのコンポーネントはas値をサポートしていません。

交換する場合

private Map<String, Object> selectedOptions;
private Map<String, Object> selectManyOptions;

private List<String> selectedOptions;
private List<String> selectManyOptions;

(またはString[]

そうすれば、この特定の問題は消えるはずです。


具体的な問題とは関係なく、この問題を修正した後は、間違いなく新しい問題に直面することになります。もう一度別の質問をする手間を省くために、ここに答えがあります:JSFで選択リストを作成する方法は?JS / jQueryを使用してアイテムを移動しようとしましたが、「検証エラー:値が無効です」というエラーを送信します

于 2012-10-17T01:46:01.387 に答える
0

selectedOptionsが<f:selectItems value="#{testListBox.selectedOptions}" />コレクションではないマップである場所があります。SelectItemの値ののコレクションを使用しますf:selectItems

于 2012-10-16T15:28:19.303 に答える