2015-10-23 1 views
0

MVC В spring-data-jpa, хранилище возвращает Page<T>, классы реализации является PageImpl<T>, то я не могу использовать бульдозер, чтобы преобразовать его, потому что pageImpl имеет два метода: hasContent() и getContent(), бульдозер не может использовать тип анализа. PageRequest отсутствует конструктор параметров, dozer также не может преобразовать. Мое решение состоит в том, чтобы переписать их, есть ли у вас лучший способ?Использования пружинных данных JPA и бульдозер в весенне-

ответ

0

Вам нужно создать дополнительный класс и отобразить страницу на него, вот пример:

конфигурации Spring для Dozer: (exmaple: XML файлы находятся под SRC/главная/ресурсы/META-INF/бульдозер)

XML файл конфигурации: конфигурация

<?xml version="1.0" encoding="UTF-8"?> 
<mappings xmlns="http://dozer.sourceforge.net" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://dozer.sourceforge.net http://dozer.sourceforge.net/schema/beanmapping.xsd"> 


<mapping wildcard="true" type="one-way"> 
    <class-a>com.comp.proj.domain.SrcClass 
    </class-a> 
    <class-b>com.comp.proj.model.DesClass 
    </class-b> 
</mapping> 



<mapping wildcard="false" type="one-way"> 
    <class-a>org.springframework.data.domain.Page</class-a> 
    <class-b>com.comp.proj.model.PageResponse 
    </class-b> 
    <field> 
     <a>totalElements</a> 
     <b>totalElements</b> 
    </field> 
    <field> 
     <a>totalPages</a> 
     <b>totalPages</b> 
    </field> 
    <field> 
     <a>content</a> 
     <b>desClasses</b> 
    </field> 
</mapping> 



</mappings> 

Весна:

<bean class="org.dozer.spring.DozerBeanMapperFactoryBean"> 
      <property name="mappingFiles" value="classpath:META-INF/dozer/*.xml" /> 
    </bean> 

Page Быстродействие Класс:

public class PageResponse { 


    private List<DesClass> desClasses; 

    private Integer totalPages; 

    private Integer totalElements; 

    //sertters and getters 
} 

Теперь в контроллере просто впрыснуть: Mapper

@Resource 
Mapper mapper; 

и конвертировать Page<SrcClass> page в PageResponse так:

mapper.map(page,PageResponse.class); 
Смежные вопросы