在 liferay 中添加自定义字段时出现问题
Issue while adding acustom field in liferay
我通过创建用户详细信息表单并调用 UserLocalServiceUtil.addUser()
手动创建用户。一切正常,我可以添加新用户。单击我的用户详细信息表单中的保存按钮后,我将表单详细信息发送到我的操作 class addUser()
。在此方法中,我调用以下方法来创建用户。
try {
UserLocalServiceUtil.addUser(creatorUserId, companyId, autoPassword, password1,
password2, autoScreenName, screenName, emailAddress, mySite, openId,
locale, firstName, middleName, lastName, prefixId, suffixId, male,
birthdayMonth, birthdayDay, birthdayYear, jobTitle, groupIds,
organizationIds, roleIds, userGroupIds, sendEmail, serviceContext);
} catch(Exception e){
System.out.println(e.getMessage());
}
用户正在使用上述代码创建。但问题是我还想在添加用户的同时添加自定义字段值。添加自定义字段的代码如下,
if(user.getExpandoBridge().hasAttribute("manager"))
{
user.getExpandoBridge().setAttribute("manager", manager);
System.out.println("Custom field is avaliable now !!! Update User entry ");
}
else
{
user.getExpandoBridge().addAttribute("manager");
user.getExpandoBridge().setAttribute("manager", manager);
System.out.println("Custom field is not avaliable !!! Update User entry ");
}
现在如何执行 addUser()
方法中的代码。我的问题是我通过调用 UserLocalServiceUtil.addUser()
以编程方式添加用户,所以这里我没有新创建的用户 ID。所以在没有用户 ID 的情况下,我如何才能为新用户获取用户对象并执行自定义字段的插入逻辑。
有什么建议请..
我需要同时创建具有自定义字段值的用户。
提前致谢..
UserLocalServiceUtil.addUser 方法 returns 创建的用户 - 即。用户 class 的实例。您可以使用该实例添加 expando 属性(并且,如果您需要它,它已经初始化了 id)。
另一个解决方案是为 UserLocalService 创建一个服务包装器。服务包装器扩展了原始服务实现并进行了进一步的定制。在您的情况下,您可以覆盖 addUser 方法,让原始实现添加用户 (super.addUser(...)),然后添加 expando 属性。
有关详细信息,请参阅《Liferay 6.2 开发人员指南》中的Overriding a Portal Service。
试试这个
try {
User newUser = UserLocalServiceUtil.addUser(creatorUserId, companyId, autoPassword, password1,
password2, autoScreenName, screenName, emailAddress, mySite, openId,
locale, firstName, middleName, lastName, prefixId, suffixId, male,
birthdayMonth, birthdayDay, birthdayYear, jobTitle, groupIds,
organizationIds, roleIds, userGroupIds, sendEmail, serviceContext);
} catch(Exception e){
System.out.println(e.getMessage());
}
之后,对于 expando 值
if(newUser.getExpandoBridge().hasAttribute("manager"))
{
newUser.getExpandoBridge().setAttribute("manager", manager);
System.out.println("Custom field is avaliable now !!! Update User entry ");
}
else
{
newUser.getExpandoBridge().addAttribute("manager");
newUser.getExpandoBridge().setAttribute("manager", manager);
System.out.println("Custom field is not avaliable !!! Update User entry ");
}
我通过创建用户详细信息表单并调用 UserLocalServiceUtil.addUser()
手动创建用户。一切正常,我可以添加新用户。单击我的用户详细信息表单中的保存按钮后,我将表单详细信息发送到我的操作 class addUser()
。在此方法中,我调用以下方法来创建用户。
try {
UserLocalServiceUtil.addUser(creatorUserId, companyId, autoPassword, password1,
password2, autoScreenName, screenName, emailAddress, mySite, openId,
locale, firstName, middleName, lastName, prefixId, suffixId, male,
birthdayMonth, birthdayDay, birthdayYear, jobTitle, groupIds,
organizationIds, roleIds, userGroupIds, sendEmail, serviceContext);
} catch(Exception e){
System.out.println(e.getMessage());
}
用户正在使用上述代码创建。但问题是我还想在添加用户的同时添加自定义字段值。添加自定义字段的代码如下,
if(user.getExpandoBridge().hasAttribute("manager"))
{
user.getExpandoBridge().setAttribute("manager", manager);
System.out.println("Custom field is avaliable now !!! Update User entry ");
}
else
{
user.getExpandoBridge().addAttribute("manager");
user.getExpandoBridge().setAttribute("manager", manager);
System.out.println("Custom field is not avaliable !!! Update User entry ");
}
现在如何执行 addUser()
方法中的代码。我的问题是我通过调用 UserLocalServiceUtil.addUser()
以编程方式添加用户,所以这里我没有新创建的用户 ID。所以在没有用户 ID 的情况下,我如何才能为新用户获取用户对象并执行自定义字段的插入逻辑。
有什么建议请..
我需要同时创建具有自定义字段值的用户。
提前致谢..
UserLocalServiceUtil.addUser 方法 returns 创建的用户 - 即。用户 class 的实例。您可以使用该实例添加 expando 属性(并且,如果您需要它,它已经初始化了 id)。
另一个解决方案是为 UserLocalService 创建一个服务包装器。服务包装器扩展了原始服务实现并进行了进一步的定制。在您的情况下,您可以覆盖 addUser 方法,让原始实现添加用户 (super.addUser(...)),然后添加 expando 属性。
有关详细信息,请参阅《Liferay 6.2 开发人员指南》中的Overriding a Portal Service。
试试这个
try {
User newUser = UserLocalServiceUtil.addUser(creatorUserId, companyId, autoPassword, password1,
password2, autoScreenName, screenName, emailAddress, mySite, openId,
locale, firstName, middleName, lastName, prefixId, suffixId, male,
birthdayMonth, birthdayDay, birthdayYear, jobTitle, groupIds,
organizationIds, roleIds, userGroupIds, sendEmail, serviceContext);
} catch(Exception e){
System.out.println(e.getMessage());
}
之后,对于 expando 值
if(newUser.getExpandoBridge().hasAttribute("manager"))
{
newUser.getExpandoBridge().setAttribute("manager", manager);
System.out.println("Custom field is avaliable now !!! Update User entry ");
}
else
{
newUser.getExpandoBridge().addAttribute("manager");
newUser.getExpandoBridge().setAttribute("manager", manager);
System.out.println("Custom field is not avaliable !!! Update User entry ");
}