在Alfresco中从Java webscript调用js webscript

在Alfresco中从Java webscript调用js webscript,java,javascript,alfresco,web-scripting,Java,Javascript,Alfresco,Web Scripting,我有个问题。我需要从JavaWebScript执行JSWebScript。我知道,怎么做: req.getRuntime().getContainer().getRegistry().getWebScript("com/home/testJs/testJs.get").execute(req, res) ,但如何构造新的WebScriptRequest对象?我需要为重写请求路径这样做。这对我来说真是个问题。 谢谢。一般来说,您应该使用。没有任何其他细节,很难再深入下去 也就是说,一般来说,通过

我有个问题。我需要从JavaWebScript执行JSWebScript。我知道,怎么做:

req.getRuntime().getContainer().getRegistry().getWebScript("com/home/testJs/testJs.get").execute(req, res)
,但如何构造新的WebScriptRequest对象?我需要为重写请求路径这样做。这对我来说真是个问题。
谢谢。

一般来说,您应该使用。没有任何其他细节,很难再深入下去

也就是说,一般来说,通过另一个HTTP调用来解决问题是一个坏主意,这基本上是模块化程度低或缺乏代码重用的表现


我宁愿将JS和Java web脚本流中常见的代码片段移动为一个,您可以从这两个地方调用它,而无需重新打包输入参数,或者更糟糕的是通过HTTP发送它们。

通常,您应该使用。没有任何其他细节,很难再深入下去

也就是说,一般来说,通过另一个HTTP调用来解决问题是一个坏主意,这基本上是模块化程度低或缺乏代码重用的表现


我宁愿将JS和Java web脚本流中常见的代码片段移动为一个,您可以从这两个地方调用它,而无需重新打包输入参数,或者更糟糕的是通过HTTP发送它们。

当然,skuro说两次通过HTTP层是个坏主意是正确的

但事实上,Alfresco直接支持执行、脚本控制器和java方法这两种方法,而无需进行难看的黑客攻击,也无需两次通过整个HTTP层

您可以这样做:

将脚本代码放入相应的.js文件中

确保Java类是
DeclarativeWebScript
的子类,重写
executeImpl
,并将自定义逻辑放在那里


当然,你仍然可以说有两个控制器是不好的风格

当然,skuro说两次通过HTTP层是个坏主意是正确的

但事实上,Alfresco直接支持执行、脚本控制器和java方法这两种方法,而无需进行难看的黑客攻击,也无需两次通过整个HTTP层

您可以这样做:

将脚本代码放入相应的.js文件中

确保Java类是
DeclarativeWebScript
的子类,重写
executeImpl
,并将自定义逻辑放在那里


当然,你仍然可以说有两个控制器是不好的风格

谢谢你的回复。但现在我有另一个问题。如果我有下一个js webscript映射-“/testUrl/{testVar1}/{testVar2}”,那么Java webscript的下一个映射称为js webscript-“/testUrl2/{origJs}”。然后我使用下一个url“testUrl2/testUrl/var1/var2”调用JavaWebScript。然后在Java代码中删除“testUrl2”并用“/testUrl/var1/var2”url构造WebScriptRequestURLImpl对象。但当我创建WebScriptRequestURLImpl时,我需要用templateUrl和templateVars创建Match对象。但是,如果js webscript有多个URL,如何获取“/testUrl/var1/var2”的:1)templateUrl?2) 如何从jswebscript的“/testUrl/var1/var2”中获取模板变量?谢谢。你错过了我说的主要话:避免从web脚本控制器中调用web脚本,这没有任何意义。这就像给你的暹罗孪生兄弟发电子邮件。我写了一个简单的代理webscript。好的,我找到了解决问题的方法。我从请求中获取匹配对象,而不是构造-
req.getRuntime().getContainer().getRegistry().findWebScript(方法,url)谢谢你的回答。谢谢你的回复。但现在我有另一个问题。如果我有下一个js webscript映射-“/testUrl/{testVar1}/{testVar2}”,那么Java webscript的下一个映射称为js webscript-“/testUrl2/{origJs}”。然后我使用下一个url“testUrl2/testUrl/var1/var2”调用JavaWebScript。然后在Java代码中删除“testUrl2”并用“/testUrl/var1/var2”url构造WebScriptRequestURLImpl对象。但当我创建WebScriptRequestURLImpl时,我需要用templateUrl和templateVars创建Match对象。但是,如果js webscript有多个URL,如何获取“/testUrl/var1/var2”的:1)templateUrl?2) 如何从jswebscript的“/testUrl/var1/var2”中获取模板变量?谢谢。你错过了我说的主要话:避免从web脚本控制器中调用web脚本,这没有任何意义。这就像给你的暹罗孪生兄弟发电子邮件。我写了一个简单的代理webscript。好的,我找到了解决问题的方法。我从请求中获取匹配对象,而不是构造-
req.getRuntime().getContainer().getRegistry().findWebScript(方法,url)谢谢你的回答。