我使用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
答案 0 :(得分:2)
您的具体问题是由于您使用Map
代替Collection
或Object[]
而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
的集合。