2016-09-25 13 views
1

私は、ユーザーに通知したい請求書を含むフォームの画面を持っています。画面はEmailTemplateの場合はbodyScreenLocationとなります。ここまでは動作します。私は各インボイスのリンクを追加して、ユーザーがメッセージを使用して文書を開くことができるようにしたかったのです。どのようにパスを構築する?それは動作しません。この方法:請求書へのリンクを通知メッセージに追加する

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-フレームワーク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(不明なソース)〜[?:?] 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] PayablesDue_xml_screen_actions.run(PayablesDue_xml_screen_actions:11)〜[スクリプト:?]

答えて

1

あなたが探しているのは、WebFacade.getWebappRootUrl()メソッドです。場所にはWebFacadeがない場合には、このような非同期サービスで実行しているとき、あなたは下のレベルにドロップする必要がありますよう、

ec.web.getWebappRootUrl(true, null) 

:ベースURLを取得するには、テンプレート内でこのようなものであるコールを使用しますこのためWebFacadeImplの静的メソッドがあります(あなたが通過するための標準的なインターフェースを持っていないとき、それはとても便利ではないのです)、ここではメソッドのシグネチャは次のとおりです。

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

標準webappNameは、「Webルート」であり、 Moqui Conf XMLファイルで何か面白いことをしていない限り、静的なStringにすることができます。 ServletContextPathは、Moqui Webアプリケーションがルートにマウントされている場合はnullまたは空のStringになります(一般的には、ServletContextにアクセスして、どこにマウントされているかを確認することはできません)。

+0

元のメッセージにコメントを追加しました。 – mrovnanik

+0

そこにNPEがあり、その原因があるので、いくつかのコードを変更しました(コミット#3cb17b5)ので、nullのwebFacadeと要求をうまく処理できます。要求のない正しいURLに対して仮想ホスティングは使用できないため、Moqui Conf XMLのwebapp要素のhttp-host、https-hostなどを設定する必要があります。 –

関連する問題