velocity - 带参数调用类构造函数
问题描述
UserNameTermQuery query = new UserNameTermQuery("*");
在将此 Java 代码转换为 Velocity时需要帮助。
到目前为止尝试过
#set($query = $content.class.getConstructor('com.atlassian.user.search.query.UserNameTermQuery').newInstance("*"))
没有运气。问题是我需要#set($usernames = $userAccessor.findUsers($query))
在自定义宏中运行并且findUsers
不接受字符串但需要特定类上的对象。并且每个 API都必须使用一个参数(字符串)初始化对象。
相应的 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);
解决方案
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 端完成所有这些操作......
推荐阅读
- python - 使用简单方法获取的 Django DetalView
- jenkins - 如果文件夹中没有任何内容,则 Jenkins Pipeline Exit
- sql-server - 在我的执行 sql 任务中添加了 SSIS 额外引号
- httpclient - HttpClient 和 Polly 延迟 14 秒
- c# - 从 Web 应用程序中的第二个智能卡读卡器读取数据
- php - 从 ms word 复制过去到 WordPress 问题
- r - 如何减去列表中的连续数字
- python - Python 脚本未从终端运行 [添加到 PATH 后]
- android - RecyclerView 上的过滤器仅显示列表中的第一个值
- c++ - constexpr 构造函数无法满足要求,但仍然是 constexpr。为什么?