2012-04-11 3 views
0

문제가 있습니다. Java webscript에서 js webscript를 실행해야합니다. 나도 알아, 어떻게 :Alfresco의 Java webscript에서 js webscript를 호출하십시오.

req.getRuntime().getContainer().getRegistry().getWebScript("com/home/testJs/testJs.get").execute(req, res) 

,하지만 어떻게 새로운 WebScriptRequest 개체를 구성 할 수 있습니까? 요청 경로 재 작성을 위해이 작업을 수행해야합니다. 그것은 나를 위해 정말로 문제입니다. 감사합니다.

답변

3

일반적으로 WebScriptRequestURLImpl을 사용해야합니다. 다른 세부 사항 없이는 더 심해질 수 없습니다.

즉, 문제를 해결하기 위해 또 다른 HTTP 호출을 시도하는 것은 일반적으로 좋지 않습니다. 이는 기본적으로 모듈화가 좋지 않거나 코드 재사용이 부족하다는 것을 나타냅니다.

JS와 Java 웹 스크립트 흐름 모두에 공통적 인 코드 조각을 Action으로 옮기고 싶습니다. 입력 매개 변수를 다시 패킹 할 필요없이 두 위치에서 호출 할 수 있으며 HTTP를 통해 전송할 수도 있습니다 .

+0

답장을 보내 주셔서 감사합니다. 하지만 지금은 또 다른 문제가 있습니다. js webscript - "/ testUrl2/{origJs}"라는 자바 웹 스크립트에 대한 다음 매핑과 "/ testUrl/{testVar1}/{testVar2}" 그런 다음 다음 url "testUrl2/testUrl/var1/var2"를 사용하여 Java 웹 스크립트를 호출합니다. 그런 다음 Java 코드에서 "testUrl2"를 제거하고 "/ testUrl/var1/var2"url로 WebScriptRequestURLImpl 객체를 구성합니다. – VladislavLysov

+0

하지만 WebScriptRequestURLImpl을 만들 때 templateUrl 및 templateVars를 사용하여 Match 개체를 만들어야합니다. 그러나 얻을 방법 : 1) js webscript에 둘 이상의 URL이있는 경우 "/ testUrl/var1/var2"에 대한 templateUrl? 2) js webscript의 "/ testUrl/var1/var2"에서 templateVars를 가져 오는 방법은 무엇입니까? 고맙습니다. – VladislavLysov

+0

당신은 내가 만든 주된 발언을 놓치고 있습니다. * 웹 스크립트 컨트롤러 내에서 웹 스크립트를 호출하지 마십시오. 아무 의미가 없습니다. 그것은 당신의 샴 쌍둥이 동생에게 이메일을 보내는 것과 같습니다. – skuro

0

물론 skuro는 HTTP 레이어를 두 번 통과하는 것은 바람직하지 않다고 말하는 것은 맞습니다.

실제로 을 실행하면 스크립트 컨트롤러와 자바 메소드가 Alfresco에서 즉시 사용할 수 있습니다. 못생긴 해킹없이 전체 HTTP 레이어를 두 번 통과시키지 않아도됩니다.

이 작업을 수행 할 수 있습니다

는 해당의 .js 파일에 스크립트 코드를 넣습니다.

자바 클래스가 DeclarativeWebScript의 하위 클래스인지 확인하고 executeImpl을 재정의 한 다음 사용자 정의 로직을 입력하십시오.

물론 두 컨트롤러를 사용하는 것은 나쁜 스타일이라고 주장 할 수 있습니다. :)