@AuthPassport
  @RequestMapping(
      value = "/edit/{id}",
      method = {RequestMethod.GET})
  public String edit(
      HttpServletRequest request, Model model, @PathVariable(value = "id") Integer id)
      throws ValidatException {
    if (!model.containsAttribute("contentModel")) {
      AuthorityEditModel authorityEditModel =
          AuthorityModelExtension.toAuthorityEditModel(authorityService.get(id));
      model.addAttribute("contentModel", authorityEditModel);
    }

    List<TreeModel> treeModels;
    AuthorityEditModel editModel = (AuthorityEditModel) model.asMap().get("contentModel");
    String expanded = ServletRequestUtils.getStringParameter(request, "expanded", null);
    if (editModel.getParentId() != null && editModel.getParentId() > 0) {
      List<TreeModel> children =
          TreeModelExtension.ToTreeModels(
              authorityService.listChain(),
              editModel.getParentId(),
              null,
              StringHelper.toIntegerList(expanded, ","));
      treeModels =
          new ArrayList<TreeModel>(
              Arrays.asList(new TreeModel("0", "0", "根节点", false, false, false, children)));
    } else {
      List<TreeModel> children =
          TreeModelExtension.ToTreeModels(
              authorityService.listChain(), null, null, StringHelper.toIntegerList(expanded, ","));
      treeModels =
          new ArrayList<TreeModel>(
              Arrays.asList(new TreeModel("0", "0", "根节点", false, true, false, children)));
    }
    model.addAttribute(
        treeDataSourceName, JSONArray.fromObject(treeModels, new JsonConfig()).toString());

    return "authority/edit";
  }