需要帮助将此Java代码UserNameTermQuery query = new UserNameTermQuery("*");
转换为Velocity。
到目前为止尝试过
#set($query = $content.class.getConstructor('com.atlassian.user.search.query.UserNameTermQuery').newInstance("*"))
没有运气。问题是我需要在自定义宏中运行#set($usernames = $userAccessor.findUsers($query))
,并且findUsers
不接受字符串,但需要特定类上的Object。并且per API对象必须使用一个参数-String初始化。
虽然相应的Java代码非常简单,但我不能在自定义Confluence宏中使用它
import com.atlassian.confluence.user.UserAccessor;
import com.atlassian.user.search.query.UserNameTermQuery;
import com.atlassian.user.search.SearchResult;
import com.atlassian.user.User;
UserNameTermQuery query = new UserNameTermQuery("*");
SearchResult<User> users = userAccessor.findUsers(query);
答案 0 :(得分:0)
必须在具有适当参数的适当类上调用getConstructor
方法。现在,您正在$content
对象的类中搜索构造函数,而不是向getConstructor
提供预期参数的类。
尝试:
#set($queryClass = $content.class.forName('com.atlassian.user.search.query.UserNameTermQuery'))
#set($dummyString = 'foo')
#set($stringClass = $dummyString.class)
#set($queryConstructor = $queryClass.getConstructor($stringClass))
#set($query = $queryConstructor.newInstance('*'))
当然,您最好尝试在Java方面进行所有操作...