便门。如何从listview文本字段中获取输入值

时间:2016-07-04 07:13:09

标签: listview input get wicket

我有这个

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);
                }

2 个答案:

答案 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
    } 
 });