我已经创建了自定义实体员工。现在我想为此实体添加监听器,以便可以跟踪添加/编辑/删除员工操作。
在 Liferay 中,对于博客、群组、用户等门户实体,我们可以添加如下属性
value.object.listener.com.liferay.portal.model.Group=com.smb.test.hook.listeners.GroupListener
通过钩子(Hook)插件在portal.properties
中。
但是对于自定义实体,这种方法似乎不起作用。
如有任何帮助,我们将不胜感激。
最佳答案
对于自定义实体,我们需要在 service-ext.properties
而不是 portal.properties
文件中添加监听器属性。
对于我的员工实体,我在 service-ext.properties
文件中添加了以下属性:
value.object.listener.com.smb.employee.model.Employee=com.smb.employee.hook.listeners.EmployeeListener
注意:除了 service.properties
文件之外,我们还需要在 src 文件夹中手动创建 service-ext.properties
文件。我们本可以更新 service.properties
,但由于它自动生成,我们的更改将会丢失,因此 service-ext.properties
是正确的 liferay 方法。
这是 service-ext.properties
文件的位置:
这是我的service.xml
:
<service-builder package-path="com.smb.employee">
<author>Suyash</author>
<namespace>smb</namespace>
<entity name="Employee" local-service="true" remote-service="true">
<!-- PK fields -->
<column name="fooId" type="long" primary="true" />
<!-- Audit fields -->
<column name="companyId" type="long" />
<column name="userId" type="long" />
<column name="userName" type="String" />
<column name="createDate" type="Date" />
<column name="modifiedDate" type="Date" />
<!-- Other fields -->
<column name="field1" type="String" />
<column name="field2" type="boolean" />
<column name="field3" type="int" />
<column name="field4" type="Date" />
<column name="field5" type="String" />
<!-- Order -->
<order by="asc">
<order-column name="field1" />
</order>
<!-- Finder methods -->
<finder name="Field2" return-type="Collection">
<finder-column name="field2" />
</finder>
</entity>
</entity>
</service-builder>
关于liferay - 如何在liferay中为自定义实体创建监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25287963/