2016-09-25 94 views
1

我有一張屏幕,其中包含一張表單,其中包含要通知用戶的發票。該屏幕用作bodyScreenLocationEmailTemplate。直到這裏,它的工作。我想爲每張發票添加一個鏈接,以便用戶可以通過消息正確打開文檔。如何構建路徑?這樣,它不工作:將發票的鏈接添加到通知消息中

enter image description here

此字段的形式創建的,包含在一個屏幕上。該屏幕使用 <service-call name="org.moqui.impl.EmailServices.send#EmailTemplate" async="true">


新增2016年10月18日

我試圖使用你的建議稱爲模板使用。

<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> 

這是日誌:

21:47:18.996 WARN oquiWorker-2  o.moqui.i.c.TransactionFacadeImpl Transaction set rollback only. The rollback was originally caused by: Error rendering screen [component://HS-data/screen/Notification/PayablesDue.xml] 

顯示java.lang.NullPointerException:空 在org.moqui.impl.context.WebFacadeImpl.makeWebappHost(WebFacadeImpl.groovy:477)〜[moqui- framework-2.0.0.jar:2.0.0] at org.moqui.impl.context.WebFacadeImpl.makeWebappRootUrl(WebFacadeImpl.groovy:520)〜[moqui-framework-2.0.0.jar:2.0.0] at org.moqui.impl.context.WebFacadeImpl.getWebappRootUrl(WebFacadeImpl.groovy:467)〜[moqui-framework-2.0.0.jar:2.0.0] at org.moqui.impl.context.WebFacade Impl $ getWebappRootUrl.call(Unknown Source)〜[?:?] at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)〜[groovy-2.4.7.jar:2.4.7 ] at 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 :?]

回答

1

您正在尋找的是WebFacade.getWebappRootUrl()方法。使用呼叫是像這樣在您的模板,以獲得基本的URL:

ec.web.getWebappRootUrl(true, null) 

當有一個地方沒有WebFacade,在異步服務運行時,例如,你將不得不放棄一個較低的水平並且在WebFacadeImpl一個靜態方法爲這個(這是不是當你不具備標準接口要經過這麼方便),這裏是方法簽名:

String getWebappRootUrl(String webappName, String servletContextPath, boolean requireFullUrl, Boolean useEncryption, ExecutionContextImpl eci) 

標準webappName是「根目錄」和除非你在Moqui Conf XML文件中做了一些特殊的事情,這可以是一個靜態字符串。如果您的Moqui webapp安裝在根目錄上(通常情況下,沒有請求我們可以通過ServletContext查看安裝位置,無法自動確定),servletContextPath可以爲null或者爲空字符串。

+0

我在原始郵件中添加了評論。 – mrovnanik

+0

我在那裏看到NPE和原因,改變了一些代碼(提交#3cb17b5),所以它會更好地處理空webFacade和請求。請注意,對於沒有可用請求的正確URL,您無法使用虛擬主機,必須設置Moqui Conf XML中webapp元素上的http-host,https-host等。 –