目标模型类型不是集合或数组

时间:2012-10-16 14:20:09

标签: jsf-2

我使用JQuery在两个选择多个列表框之间移动元素(到& fro)。下面是我的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;

现在我在提交页面时遇到错误。 &#34;目标模型类型不是集合或数组&#34; 任何人都可以建议阻止我的导航吗? - Vamsi

2 个答案:

答案 0 :(得分:2)

您的具体问题是由于您使用Map代替CollectionObject[]value <h:selectManyListbox>造成的。该组件不支持Map作为值。

如果您更换

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

通过

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

(或String[]

然后这个特殊问题就会消失。


无关具体问题,在您解决了这个问题之后,您无疑会面临一个新问题。为了避免再次提出另一个问题,请回答:How to create a picklist in JSF? Tried moving items using JS/jQuery, but submit errors with "Validation Error: Value is not valid"

答案 1 :(得分:0)

您有<f:selectItems value="#{testListBox.selectedOptions}" />,其中selectedOptions是不是Collection的Map。 在SelectItem的值中使用f:selectItems的集合。