我有一个继承结构,其中 SubtaskGroupA 和 SubtaskGroupB 都继承自 @MappedSuperclass 子任务,并允许用户提交一个组的多个子任务。我使用带有字段列表子任务的辅助类 SubtaskList。这个助手类的一个表单被渲染,用户将输入信息(使用 scala 的@select-helper)到所有子任务并提交表单。使用绑定输入时,Form<SubtaskList> form = form(SubtaskList.class).bindFromRequest();
我收到以下异常:
Caused by: com.fasterxml.jackson.databind.JsonMappingException: No serializer found for class play.data.Form and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) ) (through reference chain: java.util.ArrayList[0]->models.qosdatamodel.SubtaskGroupA["form"])
at com.fasterxml.jackson.databind.ser.impl.UnknownSerializer.failForEmpty(UnknownSerializer.java:59) ~[jackson-databind-2.3.3.jar:2.3.3]
at com.fasterxml.jackson.databind.ser.impl.UnknownSerializer.serialize(UnknownSerializer.java:26) ~[jackson-databind-2.3.3.jar:2.3.3]
at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:541) ~[jackson-databind-2.3.3.jar:2.3.3]
at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:644) ~[jackson-databind-2.3.3.jar:2.3.3]
at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:152) ~[jackson-databind-2.3.3.jar:2.3.3]
所有字段都是私有的,具有公共 getter/setter。在所有 SubtaskGroupA 的列表上调用 toJson 时,我得到了同样的异常。
感谢所有帮助。
编辑:我猜@JsonIgnore Annotation 有点帮助,但现在我在 bindFromRequest() 上收到了一个不同的异常:
Caused by: org.springframework.beans.NullValueInNestedPathException: Invalid property 'subtasks' of bean class [models.qosdatamodel.SubtaskList]: Could not instantiate property type [models.qosdatamodel.Subtask] to auto-grow nested property path: java.lang.InstantiationException
at org.springframework.beans.BeanWrapperImpl.newValue(BeanWrapperImpl.java:651) ~[spring-beans-4.0.3.RELEASE.jar:4.0.3.RELEASE]
at org.springframework.beans.BeanWrapperImpl.growCollectionIfNecessary(BeanWrapperImpl.java:885) ~[spring-beans-4.0.3.RELEASE.jar:4.0.3.RELEASE]
at org.springframework.beans.BeanWrapperImpl.getPropertyValue(BeanWrapperImpl.java:790) ~[spring-beans-4.0.3.RELEASE.jar:4.0.3.RELEASE]
at org.springframework.beans.BeanWrapperImpl.getNestedBeanWrapper(BeanWrapperImpl.java:571) ~[spring-beans-4.0.3.RELEASE.jar:4.0.3.RELEASE]
at org.springframework.beans.BeanWrapperImpl.getBeanWrapperForPropertyPath(BeanWrapperImpl.java:548) ~[spring-beans-4.0.3.RELEASE.jar:4.0.3.RELEASE]
`