我有这个
private ArrayList<String> offersParams = new ArrayList<>();
在这里,我使用offersParams size
创建带有标签和文本字段的列表视图 final ListView listview = new ListView("listview", offersParams) {
public void populateItem(final ListItem item) {
item.add(new Label("label", item.getModel());
item.add(offersStringParams = new TextField<>("textField", Model.of(""));
offersStringParams.setOutputMarkupId(true);
}
};
form.add(listview);
这是我的HTML
<tr wicket:id="listview">
<td class="col-xs-6"><span class="control-label" wicket:id="label">label</span></td>
<td class="col-xs-6"><input class="form-control" wicket:id="textField" type="text"></td>
</tr>
我需要从textFields获取所有输入值,但我只能通过此代码获得最后一个值
所以我需要帮助。我是在wicket的neewbie,我不明白如何从文本字段中获取所有输入值。在提交 - 我需要把对标签&amp;输入值到JSONObject
UPD 这是我的提交btn,其中inputValue - 它是来自文本字段
的输入值之一 setOffer = new Button("setOffer") {
@Override
public void onSubmit() {
super.onSubmit();
try {
JSONObject jsonObject = new JSONObject();
for (int a = 0; a < offersParams.size(); a++) {
jsonObject.put(offersParams.get(a), inputValue);
}
答案 0 :(得分:1)
您可以让TextFields直接写入地图,如下所示:
private Map<String, String> offersValues = new HashMap<>();
final ListView listview = new ListView("listview", offersParams) {
public void populateItem(final ListItem item) {
item.add(new Label("label", item.getModel());
item.add(new TextField<>("textField", new PropertyModel(offersValues, item.getModelObject()));
}
在#onSubmit()
中,您只需将地图转换为JSONObject:
public void onSubmit() {
JSONObject jsonObject = new JSONObject(offersValues);
...
}
答案 1 :(得分:0)
您可以尝试使用AjaxFormComponentUpdatingBehavior,并且必须将offersStringParams设为本地。
item.add(new Label("label", item.getModel());
final TextField<String> offersStringParams = new TextField<>("textField", Model.of("");
item.add(offersStringParams);
offersStringParams.setOutputMarkupId(true);
offersStringParams.add(new AjaxFormComponentUpdatingBehavior("onsubmit") {
@Override
protected void onUpdate(AjaxRequestTarget target) {
String value = offersStringParams.getModelObject();
// do something with the value here
}
});