【问题标题】:Error resolving template - url mapping fails解析模板时出错 - url 映射失败
【发布时间】:2019-05-23 03:21:18
【问题描述】:

我收到以下错误消息:

解析模板时出错 [catalog/getCatalogItemFromCatalog/catalogItemId/3916677],模板可能不存在或可能无法被任何已配置的模板解析器访问

我正在尝试使用此 url 访问我的服务和方法:

 http://192.168.99.100:31003/catalog/getCatalogItemFromCatalog/catalogItemId/3916677

控制器:

@Controller
@RequestMapping("catalog")
public class CatalogController {

    @GetMapping("/getCatalogItemFromCatalog/catalogItemId/{catalogItemId}")
    public CatalogItem getCatalogItemFromCatalog(@PathVariable Integer catalogItemId){
        List<Catalog> catalogs = getAllCatalogs();
        Optional<CatalogItem> optionalCatalogItem = Optional.empty();
        for(Catalog catalog : catalogs){
            optionalCatalogItem = catalog.getCatalogItems().stream().filter(it -> it.getCatalogItemId().equals(catalogItemId)).findFirst();
        }
        return optionalCatalogItem.orElse(null);
    }

    @GetMapping("/system/ipaddr")
    public String getIpAddr() {
        List<String> response;
        response = runSystemCommandAndGetResponse(IP_ADDR);
        return new Gson().toJson(response);
    }
}

当我卷曲时

http://192.168.99.100:31003/catalog/system/ipaddr

我没有问题。 我现在正在测试几个小时,但似乎没有任何效果,我不知道为什么它会失败。

【问题讨论】:

  • 尝试添加和斜线/@RequestMapping("/catalog") 让我知道会发生什么
  • 我想我刚刚想通了.. 我不知道为什么,但return optionalCatalogItem.orElse(null); 似乎触发了一个百里香模板。 url 映射工作正常,错误消息令人困惑。一分钟后确认。
  • 好吧,也许这个答案stackoverflow.com/questions/31944355/…可以帮助你
  • 呃,这有点奇怪。但是在添加@ResponseBody 之后它的工作......有人可以向我解释一下吗?
  • 那么如果你把@RestController而不是Controller..应该工作......

标签: rest spring-boot thymeleaf


【解决方案1】:

你的类上有 @Controller,这意味着 spring 将尝试使用所有可用的 templateResolver 解析控制器内所有方法的返回类型。

通过使用@ResponseBody,spring 会将返回类型直接包装在响应中(转换后)然后返回给客户端,类似于使用@RestController 而不是@Controller

【讨论】:

  • 现在我明白为什么它被称为RestClient ;D 因为它适用于通过休息请求数据的客户......
猜你喜欢
  • 1970-01-01
  • 2018-03-10
  • 2020-03-15
  • 1970-01-01
  • 2019-09-01
  • 2019-08-05
  • 2022-01-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多