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 中,我用相应的 getter/setter 声明了相应的绑定变量,如下所示。

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

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

现在我在提交我的页面时遇到错误。“目标模型类型不是集合或数组”任何人都可以建议它阻止我的导航吗?- 瓦姆西

4

2 回答 2

2

您的具体问题是因为您使用Map而不是CollectionObject[]as valueof引起的<h:selectManyListbox>。该组件不支持Mapas 值。

如果你更换

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

你有<f:selectItems value="#{testListBox.selectedOptions}" />where selectedOptions 是一个不是集合的地图。SelectItem在 的值中使用 的集合f:selectItems

于 2012-10-16T15:28:19.303 回答