我有一个屏幕,其中包含我希望通知用户的发票的表单。该屏幕用作bodyScreenLocation
的{{1}}。到这里,它的工作原理。我想为每张发票添加一个链接,以便用户可以直接打开文档。如何构建路径?这样它就不起作用了:
此字段以包含在屏幕中的表单形式创建。此屏幕用于名为using的模板中
EmailTemplate
新增18.10.2016
我试图使用你的建议。
<service-call name="org.moqui.impl.EmailServices.send#EmailTemplate" async="true">
这是日志:
<actions>
<entity-find entity-name="mantle.account.invoice.Invoice" list="invoiceList"/>
<script>
import org.moqui.impl.context.WebFacadeImpl
def httpUrl = WebFacadeImpl.getWebappRootUrl('webroot',null,false,false,ec)
</script>
</actions>
java.lang.NullPointerException:null 在org.moqui.impl.context.WebFacadeImpl.makeWebappHost(WebFacadeImpl.groovy:477)〜[moqui-framework-2.0.0.jar:2.0.0] 在org.moqui.impl.context.WebFacadeImpl.makeWebappRootUrl(WebFacadeImpl.groovy:520)〜[moqui-framework-2.0.0.jar:2.0.0] 在org.moqui.impl.context.WebFacadeImpl.getWebappRootUrl(WebFacadeImpl.groovy:467)〜[moqui-framework-2.0.0.jar:2.0.0] 在org.moqui.impl.context.WebFacadeImpl $ getWebappRootUrl.call(未知来源)〜[?:?] 在org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)〜[groovy-2.4.7.jar:2.4.7] 在org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)〜[groovy-2.4.7.jar:2.4.7] at PayablesDue_xml_screen_actions.run(PayablesDue_xml_screen_actions:11)〜[script:?]
答案 0 :(得分:1)
您正在寻找的是WebFacade.getWebappRootUrl()方法。在模板中使用类似这样的调用来获取基本URL:
ec.web.getWebappRootUrl(true, null)
当没有WebFacade时,例如在异步服务中运行时,你必须降低一个级别,并且WebFacadeImpl中有一个静态方法(这不太方便)当你没有经过标准接口时,这里是方法签名:
String getWebappRootUrl(String webappName, String servletContextPath, boolean requireFullUrl, Boolean useEncryption, ExecutionContextImpl eci)
标准的webappName是&#39; webroot&#39;除非你在Moqui Conf XML文件中做一些奇特的事情,否则这可能是一个静态字符串。如果您的Moqui webapp安装在根目录上,则servletContextPath可以为null或空字符串(通常情况下;如果没有请求我们可以访问ServletContext以查看它的挂载位置,则无法自动确定)。