0

Springフレームワーク、JSPページを使用してフォームを表示および検証しています。

私は、フィールド名が配列( Javaでは)でsomefield[]表されるPHPの世界から来ました。ArrayListフォームの入力から文字列のコレクションを取得したい。

完全に機能するものを定義private List<String> waypoints;しましたが、JSPでは、、、などの表記を維持する必要がsomefield[0]ありsomefield[1]ますsomefield[2]...

問題:
これは不便で、2 つのフィールドのみのシーケンスを引き起こします: somefield[0]somefield[9]実際には 10 個のフィールドが生成されます。

既存のフィールドの値を表示するための私の単純なコード。

<c:forEach items="${routeAddInput.waypoints}" var="waypoint" varStatus="status">
    <input name="waypoints[${status.index}]" type="text" value="${waypoint}"  placeholder="Enter name here" />
</c:forEach>

質問:
ユーザーが (UI で) フィールドを動的に生成することは可能ですか? インデックスは重要ではありませんか? ユーザーがフィールドを追加すると、次のインデックスを簡単に計算できますが、ユーザーがフィールドを削除すると、リストにギャップが生じます。

質問のコンテキスト:
フォームを検証するための私のサーブレットメソッド:

@RequestMapping(value = "/add", method = RequestMethod.POST)
public String step1ValidateForm(
    @ModelAttribute("routeAddInput")
    @Valid RouteAddInput form,
    BindingResult result, ModelMap model) {

    if (result.hasErrors()) {
        return "route/add";
    }

    return "redirect:addDetails";
}

検証するフォーム:

public class RouteAddInput {
    @NotNull
    @Length(min=1)
    private String locationSource;

    @NotNull
    @Length(min=1)
    private String locationDestination;

    private List<String> waypoints;

  public RouteAddInput() {
    setLocationSource("");
    setLocationDestination("");
    waypointsCoords = new ArrayList<String>();
  }

    public String getLocationSource() {
        return locationSource;
    }

    public void setLocationSource(String locationSource) {
        this.locationSource = locationSource;
    }

    public String getLocationDestination() {
        return locationDestination;
    }

    public void setLocationDestination(String locationDestination) {
        this.locationDestination = locationDestination;
    }

    public List<String> getWaypoints() {
        return waypoints;
    }

    public void setWaypoints(List<String> waypoints) {
        this.waypoints = waypoints;
    }
}
4

1 に答える 1