web/play-java-forms/src/main/java/play/data/Form.java
public Form<T> bind(Lang lang, TypedMap attrs, JsonNode data, String... allowedFields) {
    return bind(
        lang,
        attrs,
        play.libs.Scala.asJava(
            play.api.data.FormUtils.fromJson(
                "", play.api.libs.json.Json.parse(play.libs.Json.stringify(data)))),
        allowedFields);
  }
public Form<T> bind(Lang lang, TypedMap attrs, JsonNode data, String... allowedFields) {
    return bind(
        lang,
        attrs,
        play.libs.Scala.asJava(
            play.api.data.FormUtils.fromJson(
                "", play.api.libs.json.Json.parse(play.libs.Json.stringify(data)))),
        allowedFields);
  }
Binds Json data to this form - that is, handles form submission.

@param lang used for validators and formatters during binding and is part of {@link
ValidationPayload}. Later also used for formatting when retrieving a field (via {@link
#field(String)} or {@link #apply(String)}) and for translations in {@link #errorsAsJson()}.
For these methods the lang can be change via {@link #withLang(Lang)}.
@param attrs will be passed to validators via {@link ValidationPayload}
@param data data to submit
@param allowedFields the fields that should be bound to the form, all fields if not specified.
@return a copy of this form filled with the new data