我要做的是用两个多重选择进行交叉选择。当我点击一个按钮时,一个简单的javascript会将值从一个转移到另一个。这工作得很好,但是当我尝试提交整个表单时,我得到的只是空列表。这是我的组件的代码。
ListMultipleChoice<String> valueControl = new ListMultipleChoice<>("customValue",
new DocumentModel(owner, property)/*my own model for setting properties*/,optionsList,
new DocumentRenderer(options));
valueControl.setRequired(property.isRequired());
valueControl.setLabel(Model.of(property.getCaption()));
valueControl.setOutputMarkupId(true);
valueControl.setMarkupId("select-to");
ListMultipleChoice<String> multiSelect = new ListMultipleChoice<>("options",new Model(), optionsList,
new DocumentRenderer(options)); //this is my own renderer
add(multiSelect);
add(valueControl);
这是我的标记代码。
<html xmlns:wicket="http://wicket.apache.org/">
<wicket:extend>
<div>
<select wicket:id="options" id="select-from" multiple
class="form-control" data-placeholder="Nothing selected">
<option>Select me</option>
</select>
<button type="button" id="btn-add">
</button>
<button type="button" id="btn-remove">
</button>
<select wicket:id="customValue" class="form-control" multiple id="select-to"
data-placeholder="Nothing selected">
<option>Select me</option>
</div>
<script type="text/javascript">
$(document).ready(function() {
$('#btn-add').click(function(){
$('#select-from option:selected').each( function() {
$('#select-to').append("<option value='"+$(this).val()+"' selected='selected'>"+$(this).text()+"</option>");
$(this).remove();
});
});
$('#btn-remove').click(function(){
$('#select-to option:selected').each( function() {
$('#select-from').append("<option value='"+$(this).val()+"'>"+$(this).text()+"</option>");
$(this).remove();
});
});
});
});
</script>
</wicket:extend>
</html>
很抱歉,如果我错过了这个过程中的某些内容。提前谢谢大家。
答案 0 :(得分:1)
所以你要重新发明org.apache.wicket.extensions.markup.html.form.palette.Palette?为什么呢?