2014-05-12 30 views
0

希望你做得很好。Spring MVC,控制器:如何將字符串轉換爲列表<Integer>和列表<Date[]>?

我有一個與Spring MVC及其控制器有關的問題。

我有以下代碼片段的控制器內:

@RequestMapping(value = "/booking-curve/history/journeys/{journeyIds}/travel-date-ranges/{travelDateRanges}", method = RequestMethod.GET) 
@ResponseBody 
public String generateHistoricalBookingCurve(@PathVariable List<Integer> journeyIds, @PathVariable List<Date[]> travelDateRanges) { 
    double[] aveBookingLoadFactors = pricingService.calculateAveBookingLoadFactors(journeyIds, travelDateRanges); 
    JsonNodeFactory nodeFactory = JsonNodeFactory.instance; 
    ArrayNode array = nodeFactory.arrayNode(); 
    for (int i = 0; i < aveBookingLoadFactors.length; i++) { 
     ObjectNode object = nodeFactory.objectNode(); 
     object.put("daysBefore", aveBookingLoadFactors.length - 1 - i); 
     object.put("aveBookingLoadFactor", aveBookingLoadFactors[i]); 
     array.add(object); 
    } 
    return array.toString(); 
} 

在url鏈接journeyIds由逗號分隔的ID,並且在URL鏈接travelDateRanges由逗號從迄今爲止對分離的。例如旅程有點像11,22,44,travelDateRanges有點像2012-11-11至2012-12-01,2014-02-11至2014-05-03。

我想彈簧mvc可以自動將上面的字符串轉換爲List'<'Integer'>'和List'<'Date []'>',如上面我的方法所示。我認爲PropertyEditor或Converter應該適用於我的情況,但我試過沒有運氣,或者可能沒有正確配置它們。

這裏的專家請在我的問題上點亮一些!非常感謝你!

最好的問候,

+1

http://docs.spring.io /spring/docs/3.2.x/spring-framework-reference/html/validation.html – NimChimpsky

+0

謝謝。你真的很有幫助。 –

回答

2

你必須提供一個轉換器和一個包裝類...

@Component 
public class YourConverter implements Converter<YourIntWrapper, YourDateWrapper> { 

    @Override 
    public YourDateWrapper convert(YourIntWrapper source) { 
       // do your stuff 
     return yourOutWrapper; 
    } 
} 

,並將其註冊

<bean id="conversionService" 
      class="org.springframework.context.support.ConversionServiceFactoryBean"> 
     <property name="converters"> 
      <set> 
       <bean class="com.yourpackage.YourConverter"/> 
      </set> 
     </property> 
    </bean> 
+0

謝謝。你真的很有幫助。 –

+2

@YEBO謝謝 - 投票和接受是表達感謝的正常方式 – NimChimpsky

+0

我投了並接受了它。感謝您的提醒,僅僅是因爲我不太熟悉Stackoverflow約定。 –

相關問題