2016-09-25 3 views
1

사용자에게 통보하고 싶은 양식이있는 화면이 있습니다. 화면은 EmailTemplate의 경우 bodyScreenLocation으로 사용됩니다. 여기까지는 작동합니다. 각 송장에 대한 링크를 추가하여 사용자가 메시지를 사용하지 않고 문서를 열 수 있도록했습니다. 경로를 만드는 방법? 그것이 작동하지 않습니다이 방법 :이 필드는 형태로 만들어인보이스에 대한 링크를 알림 메시지에 추가

enter image description here

, 즉이 화면에 포함되어 있습니다. 이 화면은 내가 조언을 사용하려고 <service-call name="org.moqui.impl.EmailServices.send#EmailTemplate" async="true">


추가 2016년 10월 18일

를 사용하여 호출 템플릿에 사용됩니다. ~ [moqui- : org.moqui.impl.context.WebFacadeImpl.makeWebappHost (477 WebFacadeImpl.groovy)에서 널 :

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

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

로그 인 프레임 워크 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] at PayablesDue_xml_screen_actions.run (PayablesDue_xml_screen_actions : 11) ~ [스크립트 :?]

답변

1

당신이 찾고있는 것은 WebFacade.getWebappRootUrl() 메소드입니다. 기본 URL 얻을 수 있도록 템플릿에 이런 일을하는 호출을 사용하여 이러한 비동기 서비스에서 실행할 때와 같은 장소에는 WebFacade이 없을 때

ec.web.getWebappRootUrl(true, null) 

을, 당신은 수준 낮은 드롭해야합니다

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

표준 webappName는 '웹 루트'이고 :이 대한 WebFacadeImpl에서 정적 메소드 (당신이 통과하는 표준 인터페이스가없는 경우 너무 편리 아니다), 여기에 메소드 서명 인이있다 Moqui Conf XML 파일에서 뭔가 멋진 일을하지 않는 한 정적 String이 될 수 있습니다. servletContextPath는 Moqui webapp가 루트에 마운트되어있는 경우 null이거나 빈 문자열 일 수 있습니다 (일반적으로 케이스가 없기 때문에 ServletContext를 통해 ServletContext에 도달하면 자동으로 확인할 수 없습니다).

+0

원본 메시지에 주석을 추가했습니다. – mrovnanik

+0

NPE가 거기에 보이고 그 원인이 일부 코드 변경 (커밋 # 3cb17b5)되어 더 나은 null webFacade 및 요청을 처리 할 수 ​​있습니다. 요청이없는 올바른 URL의 경우 가상 호스팅을 사용할 수 없으므로 Moqui Conf XML의 webapp 요소에 대한 http-host, https-host 등을 설정해야합니다. –