사용자가 프로필의 일부 속성을 수정할시기를 알아야합니다.Liferay의 프로필 변경을 아는 방법?
나는 후크를 만들었지 만 생일 같은 일부 필드는 onAfterUpdate 및 onBeforeUpdate 함수에서 같은 값입니다.
사용자 필드와 사용자 정의 필드가 변경된 시점을 어떻게 알 수 있는지 알 수 없습니다. 나는 프로파일을 확장 할 생각 이었지만 이것이 어떻게 또는 최선의 해결책인지는 모르겠습니다.
이
는 portal.properties의 코드이다value.object.listener.com.liferay.portal.model.User=com.rulessegmentation.hook.profile.CreateAccountHook
그리고 이것은 후크 코드이다
public void onAfterUpdate(User user) throws ModelListenerException {
System.out.println("Hello UPDATE After");
try {
System.out.println(UserLocalServiceUtil.getUser(user.getUserId()).getBirthday());
System.out.println(user.getBirthday());
} catch (PortalException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SystemException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void onBeforeUpdate(User user) throws ModelListenerException {
System.out.println("Hello UPDATE Before");
try {
System.out.println(UserLocalServiceUtil.getUser(user.getUserId()).getBirthday());
System.out.println(user.getBirthday());
} catch (PortalException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SystemException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
그리고이 출력이다
안녕하세요 업데이트 전 월 2월 12일 그리니치 표준시 00시 00분 0초 1990 월 2월 12일 그리니치 표준시 00시 00분 0초 1990
안녕하세요 UPDATE 월 2월 12일 그리니치 표준시 00시 00분 0초 1990 월 이후 2월 12일 그리니치 표준시 00시 00분 0초 1990
감사!
UserLocalService를 재정 의하여 AddressLocalService에 대해 변경되고 동일한 속성을 확인합니다. 그리고 그것은 작동하지만 다른 후크가 작동하지 않기 때문에 나는 괜찮은지 모르겠습니다. 내가 후크를했다하고있는 Liferay-hook.xml에서 나는이 넣어 :
<hook>
<service>
<service-type>com.liferay.portal.service.UserLocalService</service-type>
<service-impl>com.segmentationProjecthookUpdate.hook.MyUserLocalServiceImpl</service-impl>
</service>
<service>
<service-type>com.liferay.portal.service.AddressLocalService</service-type>
<service-impl>com.segmentationProjecthookUpdate.hook.MyAddressLocalServiceImpl</service-impl>
</service>
</hook>
그리고 MyUserLocalServiceImpl.java에서 가 : 공용 클래스 MyUserLocalServiceImpl이 UserLocalServiceWrapper를 확장을 {
public MyUserLocalServiceImpl(UserLocalService userLocalService) {
super(userLocalService);
// TODO Auto-generated constructor stub
}
public User updateUser(long userId, String oldPassword, String newPassword1, String newPassword2, boolean passwordReset, String reminderQueryQuestion, String reminderQueryAnswer, String screenName, String emailAddress, long facebookId, String openId, String languageId, String timeZoneId, String greeting, String comments, String firstName, String middleName, String lastName, int prefixId, int suffixId, boolean male, int birthdayMonth, int birthdayDay, int birthdayYear, String smsSn, String aimSn, String facebookSn, String icqSn, String jabberSn, String msnSn, String mySpaceSn, String skypeSn, String twitterSn, String ymSn, String jobTitle, long[] groupIds, long[] organizationIds, long[] roleIds, List<UserGroupRole> userGroupRoles, long[] userGroupIds, ServiceContext serviceContext) {
System.out.println("UPDATE USER");
return getWrappedService().updateUser(userId, oldPassword, newPassword1, newPassword2,passwordReset, reminderQueryQuestion, reminderQueryAnswer,screenName, emailAddress, facebookId, openId, languageId,timeZoneId, greeting, comments, firstName, middleName, lastName,prefixId, suffixId, male, birthdayMonth, birthdayDay, birthdayYear, smsSn, aimSn, facebookSn, icqSn, jabberSn, msnSn, mySpaceSn,skypeSn, twitterSn, ymSn, jobTitle, groupIds, organizationIds,roleIds, userGroupRoles, userGroupIds, serviceContext);
}
}
그것은 작동하지만 로그인에 대한 다른 후크가 작동하지 않습니다.
감사합니다.
두 개의 후크에 합류했습니다.
감사합니다.그것은 작동하지만 예를 들어 비교할 수없는 주소는 다음과 같습니다. 사용자 oldUser = UserLocalServiceUtil.getUser (userId); System.out.println (oldUser.getAddresses()); 사용자 aux = getWrappedService(). updateUser (...); System.out.println (aux.getAddresses()); 출력이 동일합니다. 주소가 수정됩니다. 어떻게해야합니까? 감사합니다. – sandra
서식을 지정하지 않고도 메모에서 수행중인 작업을 확인하기가 어렵습니다. 질문을 수정할 수 있습니까? –