我有个问题。我需要从 Java webscript 执行 js webscript。我知道,怎么做:
req.getRuntime().getContainer().getRegistry().getWebScript("com/home/testJs/testJs.get").execute(req, res)
,但是如何构造新的 WebScriptRequest 对象呢?我需要这样做来重写请求路径。这对我来说真的是个问题。谢谢你。
我有个问题。我需要从 Java webscript 执行 js webscript。我知道,怎么做:
req.getRuntime().getContainer().getRegistry().getWebScript("com/home/testJs/testJs.get").execute(req, res)
,但是如何构造新的 WebScriptRequest 对象呢?我需要这样做来重写请求路径。这对我来说真的是个问题。谢谢你。
通常,您应该使用WebScriptRequestURLImpl。没有任何其他细节,很难深入。
也就是说,通过另一个 HTTP 调用来解决您的问题通常是一个坏主意,这基本上表明模块化不良或缺乏代码重用。
我宁愿将 JS 和 Java Web 脚本流中常见的一段代码移动为一个Action,您可以从这两个地方调用它,而无需重新打包输入参数,或者更糟的是通过 HTTP 发送它们。
当然,skuro 说通过 HTTP 层两次是一个坏主意是正确的。
但事实上,Alfresco 开箱即用地支持同时执行脚本控制器和 java 方法——没有丑陋的 hack,也无需通过整个 HTTP 层两次。
你可以这样做:
将您的脚本代码放在相应的 .js 文件中。
确保您的 Java 类是 的子类DeclarativeWebScript
,覆盖executeImpl
并将您的自定义逻辑放在那里。
当然,您仍然可以争辩说拥有两个控制器是不好的风格。:)