我通过将其置于转换中来对 sendEmailTemplate 进行测试:
<actions>
<!--
<service-call name="org.moqui.impl.UserServices.reset#Password"/>
-->
<service-call name="org.moqui.impl.EmailServices.send#EmailTemplate">
<field-map field-name="emailTemplateId" value="PASSWORD_RESET"/>
<field-map field-name="toAddresses" value="test@gmail.com"/>
<field-map field-name="bodyParameters" from="[userAccount:userAccount, newPassword: 'xxxxxxx']"/>
</service-call>
...
我最终得到了这个错误:java.lang.NullPointerException: Cannot execute null+null at org.codehaus.groovy.runtime.NullObject.plus(NullObject.java:121) ... at org.moqui.impl.context。 WebFacadeImpl.getWebappRootUrl(WebFacadeImpl.groovy:272)
因为 webappName 和 servletContextPath 都是空的。
这来自 sendEmailTemplate (ln 77) 中的文本渲染,因此未设置 webappName,因为它在上面的调用中。
但所有这些都没有抓住重点——我认为。我认为错误在 ScreenUrlInfo (~ln 450) 中:
if (sri.baseLinkUrl) {
baseUrl = sri.baseLinkUrl
if (baseUrl && baseUrl.charAt(baseUrl.length()-1) == '/') baseUrl.substring(0, baseUrl.length()-1)
} else {
baseUrl = WebFacadeImpl.getWebappRootUrl(sri.webappName, sri.servletContextPath, true,
this.requireEncryption, (ExecutionContextImpl) ec)
}
sri.baseLinkUrl 没有设置,我认为这就是问题所在。sri.baseLinkUrl 应该在哪里设置?