Java Liferay控制台Groovy脚本缺少方法错误

Java Liferay控制台Groovy脚本缺少方法错误,java,groovy,liferay,liferay-6,Java,Groovy,Liferay,Liferay 6,我正在Liferay控制面板服务器管理脚本控制台中测试一个快速groovy脚本。我需要尝试一下,看看是否可以使用Liferay API以编程方式添加新用户 我是groovy的新手,可能犯了一个新手错误。我不知道为什么会出错,我一直在努力寻找解决办法 我正在tomcat上使用Liferay 6.2 EE sp7 我的脚本代码是 import com.liferay.portal.model.Company; import com.liferay.portal.model.Contact; impo

我正在Liferay控制面板服务器管理脚本控制台中测试一个快速groovy脚本。我需要尝试一下,看看是否可以使用Liferay API以编程方式添加新用户

我是groovy的新手,可能犯了一个新手错误。我不知道为什么会出错,我一直在努力寻找解决办法

我正在tomcat上使用Liferay 6.2 EE sp7

我的脚本代码是

import com.liferay.portal.model.Company;
import com.liferay.portal.model.Contact;
import com.liferay.portal.model.Role;
import com.liferay.portal.model.ContactConstants;
import com.liferay.portal.model.RoleConstants;

import com.liferay.portal.model.User;
import com.liferay.portal.service.CompanyLocalServiceUtil;
import com.liferay.portal.service.ContactLocalServiceUtil;
import com.liferay.portal.service.UserLocalServiceUtil;
import com.liferay.counter.service.CounterLocalServiceUtil;
import com.liferay.portal.service.RoleLocalServiceUtil;
import com.liferay.portal.service.ServiceContext;
import com.liferay.portal.service.ServiceContextFactory;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.kernel.util.LocaleUtil;

long companyId = 52700 // my instance id
long creatorUserId = 52881 //my userid I am testing and running the script with

List<Long> userGroupIds = []

ServiceContext serviceContext = ServiceContextFactory.getInstance(User.class.getName(), actionRequest);

Company company = CompanyLocalServiceUtil.getCompanyById(companyId);
long companyGroupId = company.getGroup().getGroupId();
List<Long> groupIds = []
groupIds.add(companyGroupId as long)

Role rolePu = RoleLocalServiceUtil.getRole(companyId, RoleConstants.POWER_USER);
List<Long> roleIds = []
roleIds.add(rolePu.getRoleId() as long)

try {

    User user = UserLocalServiceUtil.addUserWithWorkflow(creatorUserId, companyId, 
        false, "test", "test", false, "01234567",
        "01234567@abc.com", 0, " ", LocaleUtil.getDefault(),
        "First Add", " ", "Last Add", 0, 0, true,
        1, 1, 1970, "Job", groupIds,
        null, roleIds, userGroupIds, false,
        serviceContext);
} catch(e) {
    out.println("""<div class="portlet-msg-error">${e}</div>""")
    e.printStackTrace(out)
}

嗯,错误消息说:

方法的无签名:静态 …
UserLocalServiceUtil.addUserWithWorkflow()
适用于参数类型:
[参数类型的长列表]

比较API文档及其接口(一个接一个),确保您使用的是Liferay 6.2(在链接6.2 API函数时)


一个很好的猜测是,当您链接的API希望看到
long[]
时,此错误消息会抱怨四个
ArrayList
参数(靠近列表末尾),错误消息会说:

方法的无签名:静态 …
UserLocalServiceUtil.addUserWithWorkflow()
适用于参数类型:
[参数类型的长列表]

比较API文档及其接口(一个接一个),确保您使用的是Liferay 6.2(在链接6.2 API函数时)


一个很好的猜测是,当您链接的API希望看到
long[]时,此错误消息会抱怨四个
ArrayList
参数(靠近列表的末尾)

谢谢Olaf!我确实检查了API和参数列表。消息中提到Groovy正在对我认为我要发送的内容进行转换。Groovy示例中的任何简短方法都可以很好地工作。我不确定为什么我的脚本不能工作,因为我是Groovy新手。我正在查看文档以了解我的想法可能需要调整。在此期间,任何洞察都是值得赞赏的。正如Olaf所说,尝试将
List userGroupIds=[]
更改为
long[]userGroupIds=[]
。显然,在整个过程中都要进行类似的调整。你是对的-这是ArrayList参数。我更改了脚本,将所有长数组定义为“long[]userGroupIds=”[]"..我已经克服了上面的错误。我将用解析更新上面的帖子。感谢Olaf的提示!它确实帮助缩小了范围,阅读Groovy文档以另一种方式定义数组也很有帮助。感谢Olaf!我检查了API和参数列表。消息中提到Groovy正在对m可能是我想发送的内容。我能找到的groovy示例中的任何简短方法都可以很好地工作。我不确定为什么我的脚本不能工作,因为我是groovy新手。我正在查看文档,以了解我可能需要调整的内容。同时,非常感谢您提供的任何见解。正如Olaf所说,尝试更改
List UserGroupId=[]
改为
long[]userGroupIds=[]
。显然,在整个过程中都要做类似的调整。你是对的-这是ArrayList参数。我更改了脚本,将所有长数组定义为“long[]userGroupIds=[]”..我已经克服了上面的错误。我将用解析更新上面的帖子。感谢Olaf的提示!它确实帮助缩小了它的范围,阅读Groovy文档以另一种方式定义数组也很有帮助。
//long[] userGroupIds = {};
//long[] userGroupIds = [] as long[].
//List<Long> userGroupIds = []

long[] userGroupIds = []

... 
Company company = CompanyLocalServiceUtil.getCompanyById(companyId);
long companyGroupId = company.getGroup().getGroupId();
//long groupIds[] = {companyGroupId};
//List<Long> groupIds = []
//groupIds.add(companyGroupId as long)
long[] groupIds = [companyGroupId];

Role rolePu = RoleLocalServiceUtil.getRole(companyId, RoleConstants.POWER_USER);
//List<Long> roleIds = []
//roleIds.add(rolePu.getRoleId() as long)
long[] roleIds = [rolePu.getRoleId()];