如果两者都在同一个存储库中,如何在java控制器中调用webscript中的另一个webscript

时间:2016-06-10 01:13:38

标签: alfresco alfresco-share alfresco-webscripts

如果两者都在同一个存储库中,如何在java控制器中的一个webscript内调用另一个webscript。

//hellowebscript
 public void execute(WebScriptRequest request, WebScriptResponse response)
{

 //need to call another webscript
}

2 个答案:

答案 0 :(得分:2)

听起来您正在尝试在同一层上调用Web脚本,并且该Web脚本没有Java控制器。如果它有一个Java控制器,你只想从Java类中调用该逻辑。

我同意评论者的观点,最好的办法是将该逻辑移植到Java类并调用它。

但是如果您不能或不想这样做,请抓取HTTP客户端(here's one)并像调用Java类中的任何其他URL一样调用URL。根据您调用的Web脚本,您可能必须获取用户的当前票证(请参阅AuthenticationUtils.getTicket())并使用alf_ticket参数将其传递给Web脚本。

答案 1 :(得分:0)

我的解决方案:

两个WebScripts,一个调用重定向到第二个。

文件:RedirectHelloWorldWebScript.java:

public class RedirectHelloWorldWebScript extends AbstractWebScript {
@Override
public void execute(WebScriptRequest wsreq, WebScriptResponse wsres)
        throws IOException {
    HttpServletResponse httpResponse = WebScriptServletRuntime
            .getHttpServletResponse(wsres);

    httpResponse.sendRedirect("/alfresco/service/helloworld");
}
}

文件:HelloWorldWebScript.java:

public class HelloWorldWebScript extends AbstractWebScript {
@Override
public void execute(WebScriptRequest req, WebScriptResponse res)
        throws IOException {
    try {
        JSONObject obj = new JSONObject();
        obj.put("message", "Hello Word!");
        String jsonString = obj.toString();
        res.getWriter().write(jsonString);
    } 

    catch (JSONException e) {
        throw new WebScriptException("Unable to serialize JSON");
    }

    catch (org.json.JSONException e) {
        e.printStackTrace();
    }
}
}

描述符:

文件:redirecthelloworld.get.desc.xml:

<webscript>
   <shortname>RedirectHelloWorld</shortname>
   <description>Redirect to Hello World</description>
   <url>/redirecthelloworld</url>
   <authentication>none</authentication>
   <family>Java-Backed WebScripts</family>
</webscript>

文件:helloworld.get.desc.xml:

<webscript>
   <shortname>helloworld</shortname>
   <description>Hello World</description>
   <url>/helloworld</url>
   <url>/helloworld.json</url>
   <authentication>none</authentication>
   <family>Java-Backed WebScripts</family>
</webscript>

而且,Spring的背景:

文件:webscript-context.xml:

<bean id="webscript.helloworld.get"
  class="com.fegor.HelloWorldWebScript"
  parent="webscript">       
</bean>

<bean id="webscript.redirecthelloworld.get"
  class="com.fegor.RedirectHelloWorldWebScript"
  parent="webscript">       
</bean>

上帝好运!