Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.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
Spring 弹簧不';不要用我的电脑。为什么?_Spring_Spring Mvc_Jodatime - Fatal编程技术网

Spring 弹簧不';不要用我的电脑。为什么?

Spring 弹簧不';不要用我的电脑。为什么?,spring,spring-mvc,jodatime,Spring,Spring Mvc,Jodatime,我有自定义转换器: public class DateTimeConverter implements Converter<String, DateTime> { private static final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd HH:mm:ss"; private DateTimeFormatter formatter; private String datePattern = DEFAULT

我有自定义转换器:

public class DateTimeConverter implements Converter<String, DateTime> {

    private static final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd HH:mm:ss";

    private DateTimeFormatter formatter;

    private String datePattern = DEFAULT_DATE_PATTERN;

    public String getDatePattern() {
        return datePattern;
    }

    @Autowired(required = false)
    public void setDatePattern(String datePattern) {
        this.datePattern = datePattern;
    }

    @PostConstruct
    public void init() {
        formatter = DateTimeFormat.forPattern(datePattern);
    }

    @Override
    public DateTime convert(String source) {
        if (source == null) return new DateTime();
        return formatter.parseDateTime(source);
    }
}
我在设置中注册了转换器:

<mvc:annotation-driven conversion-service="conversionService"/>
<bean id="conversionService"
      class="org.springframework.context.support.ConversionServiceFactoryBean">
    <property name="converters">
        <list>
            <bean class="com.myapp.util.DateTimeConverter"/>
        </list>
    </property>
</bean>
测试:

但是,在这种情况下:

@Test
public void testFindById() throws Exception {
    ConversionService conversionService = (ConversionService) context.getBean("conversionService");
    assertTrue(conversionService.canConvert(String.class, DateTime.class));
建立成功

我不明白:为什么

感谢您提供的任何帮助

您不必创建自己的转换器或注册转换服务-如果Joda Time位于项目的类路径中,则通过注释(
是必需的)

因此,您需要的只是:

@NotNull
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private DateTime dateAndTime;

你什么时候有例外?发布触发它的代码。当我启动测试时,我会得到异常。向我们显示测试类,然后…@john812是否在
business config.xml
中注册了ConversionService?你能在测试中自动连接你的
DateTimeConverter
吗?是的,ConversionService在business-config.xml中注册,我能自动连接我的转换器和ConversionService(annotation@Autowired)你是100%对的。然而,为什么自定义转换器不工作仍然是一个谜。@Pavelholl这是典型的IMO。可能是,但这不是我评论的重点。配置似乎完全有效,但它不起作用。
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("file:src/main/resources/spring/business-config.xml")
public class JdbcTransactionRepositoryImplTest extends TestCase {

private static final Logger logger = Logger.getLogger(JdbcTransactionRepositoryImplTest.class);

@Autowired
private ApplicationContext context;

private JdbcTransactionRepositoryImpl transactionRepository;

@Before
public void setup() {
    transactionRepository = new JdbcTransactionRepositoryImpl((DataSource)         context.getBean("dataSource"));
}

@Test
public void testFindById() throws Exception {
    Transaction tr1 = transactionRepository.findById(1);
    assertEquals(new Long(1L), tr1.getId());
}
@Test
public void testFindById() throws Exception {
    ConversionService conversionService = (ConversionService) context.getBean("conversionService");
    assertTrue(conversionService.canConvert(String.class, DateTime.class));
@NotNull
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private DateTime dateAndTime;