如何接收LocalDate作为参数

时间:2017-12-27 14:55:41

标签: java spring-mvc java-time localdate

我正在尝试将一个简单的对象插入数据库,但在我的控制器上,我无法发送# In CMakeLists.txt target_link_libraries(myproject GLEW_1130) 参数。

错误显示LocalDate,我非常确定此malformed request syntax, invalid request message framing, or deceptive request routing参数正在导致。

我的控制器

LocalDate

财务实体

@RequestMapping(value = "/finance",method = RequestMethod.POST)
    public String postFinance(@ModelAttribute("finance") 
        Finance finance, Model model){
       financeServices.targetActivate(finance);
       model.addAttribute("targetSetStatus",true);
        return "finance/finance";
}

编辑: - 我试图从表单插入,所以我的表单看起来像: -

@Entity
public class Finance {


    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private LocalDate targetDate;
    private Double targetAmount;
    private LocalDate createdDate;

      //getter setters //

}

如果我将LocalDate替换为<form class="form-horizontal" id="productForm" th:action="@{/finance}" method="post"> <div class="form-group"> <div th:if="${targetSetStatus}"> <div class="alert alert-success"> <p>New Target Has Been Set</p> </div> </div> </div> <div class="form-group"> <label class="control-label col-sm-3" for="targetAmount">Target Amount:</label> <div class="col-sm-9"> <input type="number" class="form-control" placeholder="Targeted Amount" name="targetAmount" id="targetAmount"> </div> </div> <div class="form-group"> <label class="control-label col-sm-3" for="targetDate">Target Date:</label> <div class="col-sm-9"> <input type="date" class="form-control" placeholder="Targeted Date" name="targetDate" id="targetDate"> </div> </div> <div class="form-group"> <div class="col-sm-offset-3 col-sm-9"> <button type="submit" class="btn btn-default">Set Target</button> </div> </div> </form> 它可以工作,但我想将LocalDate用作java 8提供的API。

1 个答案:

答案 0 :(得分:0)

您必须注册自定义JsonDeserializer。使用此代码:

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import org.springframework.boot.jackson.JsonComponent;

import java.io.IOException;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

@JsonComponent
public class CustomJsonDeserializer {

    /*public static class Serializer extends JsonSerializer<LocalDate> {

        @Override
        public void serialize(LocalDate localDate, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {

        }
    }*/

    public static class LocalDateDeserializer extends JsonDeserializer<LocalDate> {

        @Override
        public LocalDate deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {

            String strDate = jsonParser.getValueAsString();

            if (strDate == null || strDate.isEmpty()) {
                return null;
            }

            return LocalDate.parse(strDate, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
        }
    }

}

查看此链接Custom JSON Serializers and Deserializers

相关问题