Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring MVC自定义转换器不工作_Java_Spring_Spring Mvc - Fatal编程技术网

Java Spring MVC自定义转换器不工作

Java Spring MVC自定义转换器不工作,java,spring,spring-mvc,Java,Spring,Spring Mvc,我试图为我的SpringMVC应用程序创建一个自定义转换器,但它从未被触发 下面是我如何实现和注册它的: public class ObjectIdSpringConverter implements Converter<String, ObjectId>{ public ObjectIdSpringConverter(){ System.out.println("ObjectIdSpringConverter picked up "); }

我试图为我的SpringMVC应用程序创建一个自定义转换器,但它从未被触发

下面是我如何实现和注册它的:

public class ObjectIdSpringConverter implements Converter<String, ObjectId>{

    public ObjectIdSpringConverter(){
        System.out.println("ObjectIdSpringConverter picked up ");
    }

    @Override
    public ObjectId convert(String source) {
        System.out.println("ObjectIdSpringConverter converting");
        return new ObjectId(source);        
    }
}
我在转换器的构造函数和convert()方法中放置了一些断点,可以看出它的构造是正确的,但是从未调用convert()方法,这会导致控制器接收到icorrect值

下面是一个示例控制器方法:

  @Controller
  public class HomeController {

         @RequestMapping(value="/home/testObjectId.amlgm", method = RequestMethod.GET)
         public ObjectId testObjectId(ObjectId oid){
            System.out.println("expected 552952cec9ac88712ee0d36b, actual " + oid.toString());
            System.out.println(oid);
            return oid;
         }

   }
我知道convert方法永远不会被调用,因为断点永远不会被命中,而且值不是期望的值。我还调试/跟踪了spring的工作,它似乎没有使用我的转换器来实例化控制器方法的参数ObjectId

有人能告诉我我错过了什么吗


谢谢

您的格式化程序应该实现
格式化程序
,在您的情况下,T将是ObjectId


谢谢你的回答。出于某种原因,这也不起作用。。。我得到了完全相同的结果。我将尝试一个新的项目,并让你知道我的结果。
  @Controller
  public class HomeController {

         @RequestMapping(value="/home/testObjectId.amlgm", method = RequestMethod.GET)
         public ObjectId testObjectId(ObjectId oid){
            System.out.println("expected 552952cec9ac88712ee0d36b, actual " + oid.toString());
            System.out.println(oid);
            return oid;
         }

   }