2016-06-11 35 views
0

我已通過Hook插件創建expando列,成功將自定義字段添加到用戶註冊頁面(create_account.jsp)。但是,只有通過管理界面對其啓用訪客權限之後,該字段纔會顯示。Liferay - 爲自定義字段/ expand列設置訪客權限

我需要能夠通過Hook插件以編程方式執行此操作。詳盡的研究使我相信,下面的代碼應該可以做到這一點:

 Role guest = RoleLocalServiceUtil.getRole(companyId, RoleConstants.GUEST); 

    ResourcePermissionLocalServiceUtil.setResourcePermissions(
      companyId, 
      ExpandoColumn.class.getName(), 
      ResourceConstants.SCOPE_INDIVIDUAL,   
      String.valueOf(expandoColumn.getColumnId()), 
      guest.getRoleId(), 
      new String[] { ActionKeys.VIEW, ActionKeys.UPDATE }); 

但它沒有。

任何人有任何想法?

+0

下面幫我過線:角色客人= RoleLocalServiceUtil.getRole (PortalUtil.getDefaultCompanyId(),RoleConstants.GUEST); String [] actionsRW = new String [] {ActionKeys.VIEW}; (),private.getRoleId(),actionsRW); –

+0

如果您已經自行解決了您的問題,請將其分享爲答案,以便將來可能對其他人有所幫助。 –

回答

0

我試了一下和你一樣的代碼,它對我很有用。在我看來,問題出現在「expandoColumn.getColumnId()」中。你如何retreive對象ExpandoColumn?我試着與表中的id和名稱:

ExpandoColumn expandoColumn = ExpandoColumnLocalServiceUtil.getColumn(21806, "Menu"); 

對於這種嘗試我直接從數據庫retreive表ID,從表「expandocolumn」