我試圖調用屬於遠程門戶的portlet的控制器。 我試過下面的this教程,但它有很多額外的東西,這些都會導致我的構建錯誤。Liferay - 調用遠程portlet的控制器
我在遠程portlet中有一個像下面這樣的控制器。
@Controller
public class SampleRestController {
@RequestMapping(value = "/helloSample", method=RequestMethod.GET)
@ResponseStatus(HttpStatus.OK)
public @ResponseBody String helloSample() {
return "Finally!";
}
}
我應該怎麼做才能使用休息呼叫來調用上述方法..?也就是說,什麼是我應該做一個基本的春天的Liferay portlet可以得到http://localhost:port/.../.../helloSample
輸出作爲Finally!
我試圖實現這一點。但我仍然不成功。我看到消息'[RequestMappingHandlerMapping:181]映射「{[/ helloSample],methods = [GET],params = [],headers = [],consumes = [],produce = [],custom = []}」到public java.lang.String com.liferay.test.servlet.SampleRestController.helloSample()'。但是,當我嘗試訪問使用上面提供的網址時,它說'Not Found' –
您可以請驗證https://github.com/philipjohn007/Test-Portlet並讓我知道我在代碼中做了什麼錯誤..?我沒有在'test-servlet'中爲'jacksonObjectMapper'添加部分,因爲我沒有發現該映射器沒有找到類。這是造成這個問題..? –
這個例子非常好,幾乎可以工作。您需要將'@ ResponseBody'註釋添加到您的控制器方法中。否則,結果將被解釋爲JSP視圖名稱。我更正了url描述 - 它不包含portlet名稱(正如我最初寫的那樣),但當然是應用程序的上下文路徑(在我的情況下是Tomcat - http:// localhost:8080/test-1.0-SNAPSHOT/services/helloSample)。這就是我需要使測試應用程序正常工作的一切。您可以在'helloSample'方法中返回'PortalUtil.getPortal()'來驗證JSON映射器的工作原理。 –