我有以下REST控制器:
@RestController
class PersonController {
final PersonService personService
@Autowired
PersonController( PersonService personService ){
this.personService = personService
}
@RequestMapping(value="/persons",method=RequestMethod.GET)
Page<Person> list( Pageable pageable){
Page<Person> persons = personService.listAllByPage(pageable)
persons
}
}
以下存储库:
interface PersonRepository extends PagingAndSortingRepository<Person,Integer> {
}
以及服务:
interface PersonService {
Page<Person> listAllByPage(Pageable pageable)
}
@Service
class PersonServiceImpl implements PersonService {
final PersonRepository personRepository
@Autowired
PersonServiceImpl(PersonRepository personRepository){
this.personRepository = personRepository
}
@Override
Page<Person> listAllByPage(Pageable pageable) {
personRepository.findAll(pageable)
}
}
服务器按预期工作,但客户端有问题。我不知道如何从回复中获取内容。
在客户端我有一个这样的方法:
@Override
public List<PersonDTO> findAll() throws DataAccessException {
try {
restClient.getServiceURI(PERSON_URL));
ResponseEntity<PageImpl<PersonDTO>> response =
restClient.exchange(
restClient.getServiceURI(PERSON_URL),
HttpMethod.GET,
null,
new ParameterizedTypeReference<PageImpl<PersonDTO>>() {
});
return response.getBody().getContent();
} catch (Exception e){}
}
但是我有以下例外:
org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class org.springframework.data.domain.PageImpl]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `org.springframework.data.domain.PageImpl` (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
现在我阅读了这个stackoverflow条目并添加了CustomPageImpl类:如何使用页面
我将客户端中的方法更改为以下内容:
@Override
public List<PersonDTO> findAll() throws DataAccessException {
try {
restClient.getServiceURI(PERSON_URL));
ResponseEntity<CustomPageImpl<PersonDTO>> response =
restClient.exchange(
restClient.getServiceURI(PERSON_URL),
HttpMethod.GET,
null,
new ParameterizedTypeReference<CustomPageImpl<PersonDTO>>() {
});
return response.getBody().getContent();
} catch (Exception e){}
}
但现在我得到了几乎相同的例外:
org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class org.springframework.data.domain.Pageable]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `org.springframework.data.domain.Pageable` (no Creators, like default construct, exist): abstract types either need to be mapped to concrete types, have custom deserializer, or contain additional type information
在您提到的同一个堆栈溢出条目中,有一个针对exchange请求的解决方案。您可以使用PagedResources
而不是页面/自定义实现。有关更多详细信息,请参阅此链接。
以下是您的要求:-
ResponseEntity<PagedResources<PersonDTO>> response =
restClient.exchange(
restClient.getServiceURI(PERSON_URL),
HttpMethod.GET,
null,
new ParameterizedTypeReference<PagedResources<PersonDTO>>() {
});
PagedResources<PersonDTO> resBody = response.getBody();
return resBody.getContent();// Returns a collection
当我使用关于我们的
问题内容: 在Linux中,如何获取URL并在shell脚本的变量中获取其内容? 问题答案: 您可以使用命令下载页面并将其读取为变量,如下所示: 我们使用的选项允许我们指定将页面内容转储到的文件的名称。我们指定将转储放入标准输出并将其收集到变量中。您可以添加安静选项以关闭wget输出。 您还可以为此使用curl命令: 我们需要使用该选项,因为我们请求的页面可能已经移动。在这种情况下,我们需要从新位
问题内容: 我使用Crawljax抓取了动态网页。我可以获取当前的ID,状态和DOM。但我无法获得网站内容。任何人都可以帮助我吗? 如何获取动态/ Java脚本网页内容。 问题答案: 我们可以获取网站源代码cc.getBrowser()。getStrippedDom()); 或cc.getCurrentState()。getDocument();或 此编码是返回源代码(css / java脚本文件
问题内容: 我在php(string)中有一个div,我想获取内容。 例如: 而且我要 样式在变化,我只知道div ID。 更新 这是我的代码,与turbod源相同,结果也相同。 所以这是原始的html 在此代码之后,我得到以下信息:链接 问题答案: 使用php DomDocument类。http://www.php.net/manual/zh/class.domdocument.php
问题内容: 在PHP中,如何获取当前页面的URL?最好只是http://domain.com之后的部分。 问题答案: $_SERVER[‘REQUEST_URI’] 有关$_SERVER数组中可用信息的更多详细信息,请参见PHP手册页。 如果您还需要查询字符串(URL中的后面的位),则该部分位于此变量中:
问题内容: 我正在尝试在我的项目中获取字段页面,但我不知道如何获取每个字段和字段的页码。我有此代码: 如何获得字段的页码? 谢谢罗恩 问题答案: 这将向您显示该字段出现在什么页面上(从0开始):