1

Spring MVC REST バックエンド アプリケーションがあります。日付を「mm/dd/yyyy」形式でクライアントに送信しています。

しかし、日付を「mm/dd/yyyy」でフォーマットして POST すると、データ バインディングが失敗します。

これは、日付をフロントエンドに送信するときに java.util.date を mm/dd/yyy に変換する Spring customdateserializer obj です。

public class CustomDateSerializer extends JsonSerializer<Date> {  
    @Override
    public void serialize(Date value, JsonGenerator gen, SerializerProvider arg2) throws 
        IOException, JsonProcessingException {      

        SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
        String formattedDate = formatter.format(value);

        gen.writeString(formattedDate);

    }
}

データ バインディングが失敗するオブジェクトは次のとおりです。

@Entity
@Table(name = "bill")
public class Bill implements GenericObject {

    @Temporal(javax.persistence.TemporalType.TIMESTAMP)
    private Date billDate;

    @JsonSerialize(using = CustomDateSerializer.class)
    public Date getBillDate() {
        return billDate;
    }

    public void setBillDate(Date billDate) {
        this.billDate = billDate;
    }
}

これが私がデータを投稿しているエンドポイントです(Spring MVCコントローラー)

@RequestMapping(value = { "/user/{userId}/bill" }, method = { RequestMethod.POST })
    public void addBill(@RequestBody Bill bill_p,@PathVariable("userId") int userId,
            HttpServletResponse httpResponse_p, WebRequest request_p) {

        processing......

    }
4

1 に答える 1

3

私が言えることは、フォーマットされた日付をブラウザに送信しないということです。Date型構造\オブジェクトを送信して、クライアント側で日付の書式設定を処理できるようにします。Angular には、dateこのタスク用のフィルターがあります。

同様に、データをサーバーに送信する場合は、フォーマットされたデータではなくモデルの日付値を送信してください。サーバー側のデシリアライザーがそれを処理すると思います。リクエストの送信フォーマットを確認してください。

于 2013-10-27T04:54:34.520 に答える