在控制器中生成有效的 hdiv url

Generate Valid hdiv url in controller

我已成功配置 Spring Boot 2.0.4 以使用 spring-security with HDIV。 我决定使用 jquery datatable 作为 table 渲染技术。 问题来了... 对于我的数据的每一行table,我想创建一个用 _HDIV_STATE_ 参数签名的详细信息 link 如何在迭代我的项目列表时生成有效的 link控制器?

通用控制器:

@Controller
public class ItemController {

   ....

   @GetMapping(value = "/test")
   public @ResponseBody test() {
      List<Item> items = service.getList();
      items.foreach(item -> {
         item.setDetailUrl(HDIV_GENERATED_URL);
      })
    }

   ...

  }

谢谢

您可以在控制器中注入 LinkUrlProcessor class。

@autowired
LinkUrlProcessor linkUrlProcessor;

并调用 processUrl 方法。

String processedUrl linkUrlProcessor.processUrl(request, originalUrl);

processedUrl 将包含 _HDIV_STATE_ 参数。

好的,此解决方案仅适用于带有路径变量的 ulrs。

@Autowired
ServletContext context;

public @ResponseBody String test() {
  int id = 1;
  LinukUrlProcessor lup = HDIVUtil.getLinkUrlProcessor(context);
  RequestContextHolder rch =HDIVUtil.getRequestContext(context);
  //This works perfectly
  String processedWithPath = lup.processUrl(rch, "/test" + id);
  //This produce a _HVID_STATE_ but query param always 0
  String processedWithQuery = lup.processUrl(rch, "/test?id=" + id);
  return ....
}

对于使用查询参数生成有效 url 是否有进一步的帮助?