没有找到类javax.naming.ldap.LdapName $ 1的序列化程序

时间:2015-01-20 00:29:15

标签: json spring-mvc ldap

我是Spring Framework MVC和LDAP的新手。 我试图制作RESTful API,实际上我已经做到了。 我可以通过调用apis来获取其他json对象。 但是当这些是LDAP类时,我无法获得json对象。 我的意思是我认为LDAP类不能转换为json对象。

哪些LDAP类意味着类具有此批注: @Entry(objectClasses = {" inetOrgPerson"," organizationalPerson"," person"," top"},base =" ou =人&#34)

当我尝试通过调用rest apis来获取json对象时,这是消息: org.springframework.http.converter.HttpMessageNotWritableException:无法编写JSON:找不到类javax.naming.ldap.LdapName $ 1的序列化程序,并且没有发现创建BeanSerializer的属性(以避免异常,禁用SerializationFeature.FAIL_ON_EMPTY_BEANS))(通过参考链) :org.springframework.ldap.samples.useradmin.domain.User [" id"] - > javax.naming.ldap.LdapName [" all"]);嵌套异常是com.fasterxml.jackson.databind.JsonMappingException:找不到类javax.naming.ldap.LdapName $ 1的序列化器,并且没有发现创建BeanSerializer的属性(为了避免异常,禁用SerializationFeature.FAIL_ON_EMPTY_BEANS))(通过引用链:org .springframework.ldap.samples.useradmin.domain.User [" ID"] - > javax.naming.ldap.LdapName中["所有"])     在org.springframework.http.converter.json.MappingJackson2HttpMessageConverter.writeInternal(MappingJackson2HttpMessageConverter.java:207)     在org.springframework.http.converter.AbstractHttpMessageConverter.write(AbstractHttpMessageConverter.java:179)     在org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:148)     在org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:90)     在org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:189)     在org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:69)     在org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:122)     在org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:745)     在org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:686)     在org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)     在org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925)     在org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)     在org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:953)     在org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:844)     在javax.servlet.http.HttpServlet.service(HttpServlet.java:735)     在org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:829)     在javax.servlet.http.HttpServlet.service(HttpServlet.java:848)     在org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684)     在org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1496)     在org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77)     在org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)     在org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1476)     在org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)     在org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)     在org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)     在org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)     at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)     在org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)     在org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)     在org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)     在org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)     at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255)     在org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154)     在org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)     在org.eclipse.jetty.server.Server.handle(Server.java:370)     at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494)     at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:971)     at org.eclipse.jetty.server.AbstractHttpConnection $ RequestHandler.headerComplete(AbstractHttpConnection.java:1033)     在org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:644)     在org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)     at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)     在org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:667)     在org.eclipse.jetty.io.nio.SelectChannelEndPoint $ 1.run(SelectChannelEndPoint.java:52)     在org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)     在org.eclipse.jetty.util.thread.QueuedThreadPool $ 3.run(QueuedThreadPool.java:543)     在java.lang.Thread.run(Thread.java:745) 引起:com.fasterxml.jackson.databind.JsonMappingException:找不到类javax.naming.ldap.LdapName $ 1的序列化器,并且没有发现创建BeanSerializer的属性(为了避免异常,禁用SerializationFeature.FAIL_ON_EMPTY_BEANS))(通过引用链:org .springframework.ldap.samples.useradmin.domain.User [" ID"] - > javax.naming.ldap.LdapName中["所有"])     在com.fasterxml.jackson.databind.ser.impl.UnknownSerializer.failForEmpty(UnknownSerializer.java:59)     at com.fasterxml.jackson.databind.ser.impl.UnknownSerializer.serialize(UnknownSerializer.java:26)     在com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:569)     在com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:597)     at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:142)     在com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:569)     在com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:597)     at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:142)     在com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:118)     at com.fasterxml.jackson.databind.ObjectMapper.writeValue(ObjectMapper.java:1819)     在org.springframework.http.converter.json.MappingJackson2HttpMessageConverter.writeInternal(MappingJackson2HttpMessageConverter.java:204)     ......还有45个 引起:

com.fasterxml.jackson.databind.JsonMappingException:找不到类javax.naming.ldap.LdapName $ 1的序列化程序,并且没有发现创建BeanSerializer的属性(为了避免异常,禁用SerializationFeature.FAIL_ON_EMPTY_BEANS))(通过引用链:org .springframework.ldap.samples.useradmin.domain.User [" ID"] - > javax.naming.ldap.LdapName中["所有"])     在com.fasterxml.jackson.databind.ser.impl.UnknownSerializer.failForEmpty(UnknownSerializer.java:59)     at com.fasterxml.jackson.databind.ser.impl.UnknownSerializer.serialize(UnknownSerializer.java:26)     在com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:569)     在com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:597)     at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:142)     在com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:569)     在com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:597)     at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:142)     在com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:118)     at com.fasterxml.jackson.databind.ObjectMapper.writeValue(ObjectMapper.java:1819)     在org.springframework.http.converter.json.MappingJackson2HttpMessageConverter.writeInternal(MappingJackson2HttpMessageConverter.java:204)     在org.springframework.http.converter.AbstractHttpMessageConverter.write(AbstractHttpMessageConverter.java:179)     在org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:148)     在org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:90)     在org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:189)     在org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:69)     在org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:122)     在org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:745)     在org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:686)     在org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)     在org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925)     在org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)     在org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:953)     在org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:844)     在javax.servlet.http.HttpServlet.service(HttpServlet.java:735)     在org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:829)     在javax.servlet.http.HttpServlet.service(HttpServlet.java:848)     在org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684)     在org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1496)     在org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77)     在org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)     在org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1476)     在org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)     在org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)     在org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)     在org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)     at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)     在org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)     在org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)     在org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)     在org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)     at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255)     在org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154)     在org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)     在org.eclipse.jetty.server.Server.handle(Server.java:370)     at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494)     at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:971)     at org.eclipse.jetty.server.AbstractHttpConnection $ RequestHandler.headerComplete(AbstractHttpConnection.java:1033)     在org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:644)     在org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)     at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)     在org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:667)     在org.eclipse.jetty.io.nio.SelectChannelEndPoint $ 1.run(SelectChannelEndPoint.java:52)     在org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)     在org.eclipse.jetty.util.thread.QueuedThreadPool $ 3.run(QueuedThreadPool.java:543)     在java.lang.Thread.run(Thread.java:745)

4 个答案:

答案 0 :(得分:1)

此错误意味着-无法序列化JSON数据并将其发送到前端,甚至无法正常进行反序列化。 将@JSONIgnore用作id变量。 根据我的代码,这对我有用。

wyborZadania* obj = new wyborZadania(numerZad,[this](){ tab(); };

答案 1 :(得分:0)

我的解决方案如下

private String wrapDN(Name dn) {
    Enumeration<String> allElements = dn.getAll();
    StringBuilder value = new StringBuilder();
    while (allElements.hasMoreElements()) {
        value.append(allElements.nextElement());
        value.append(",");
    }
    value.deleteCharAt(value.length() - 1);
    return value.toString();
}

然后将值作为字符串返回

答案 2 :(得分:0)

这对我有用。每个LdapUser的模型类:

@Id
private Name dn;

//other vars, getters, setters are here

public String getDn() {
        return dn.toString();
    }

@Override
    public String toString() {
        return String.valueOf(dn);
    }

答案 3 :(得分:0)

如果你使用jackson进行序列化,你可以添加这样的类:

@JsonComponent
public class LdapNameSerializer extends JsonSerializer<LdapName> {

    @Override
    public void serialize(LdapName ldapName, JsonGenerator jsonGenerator,
      SerializerProvider serializerProvider) throws IOException {
        jsonGenerator.writeString(ldapName.toString());
    }
}
相关问题