我创建了自定义实体员工。现在我想为这个实体添加监听器,以便我可以跟踪添加/编辑/删除员工操作。
在Liferay中,对于博客,群组,用户等门户网站,我们可以添加
等属性value.object.listener.com.liferay.portal.model.Group=com.smb.test.hook.listeners.GroupListener
通过hook-plugin在portal.properties
中。
但对于自定义实体,这种方法似乎不起作用。
任何帮助都将不胜感激。
答案 0 :(得分:6)
对于自定义实体,我们需要在service-ext.properties
而不是portal.properties
文件中添加侦听器属性。
对于我的员工实体,我在service-ext.properties
文件中添加了以下属性:
value.object.listener.com.smb.employee.model.Employee=com.smb.employee.hook.listeners.EmployeeListener
注意:我们需要在service-ext.properties
文件之外的src文件夹中手动创建service.properties
文件。我们可以更新service.properties
但由于它会自动生成,因此我们的更改会丢失,因此service-ext.properties
是正确的生命周期方法。
以下是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>