在Liferay 7中调用portlet

时间:2016-10-22 10:26:15

标签: liferay

我有一个简单的portlet,它返回一个JSON对象。这是portlet的代码:

package example.portlet;

@Component(
    immediate = true,
    property = {
        "com.liferay.portlet.display-category=category.sample",
        "com.liferay.portlet.instanceable=true",
        "javax.portlet.display-name=Example Portlet",
        "javax.portlet.init-param.template-path=/",
        "javax.portlet.init-param.view-template=/view.jsp",
        "javax.portlet.resource-bundle=content.Language",
        "javax.portlet.security-role-ref=power-user,user"
    },
    service = Portlet.class
)
public class ExamplePortlet extends MVCPortlet {

    @Override
    public void serveResource(ResourceRequest request, ResourceResponse response) throws IOException, PortletException {
        ...
    } 
}

我想使用来自portlet模块之外的现有JavaScript的A.io.request来调用此portlet。我怎样才能做到这一点?我应该提供什么网址?

2 个答案:

答案 0 :(得分:1)

一个portlet有一个URL,具体取决于它所在的页面,然后可能在实例上,因为它可以多次添加到页面中。因此,人们无法真正了解"" URL。如果这是正确的portlet代码,则应该将其调用或至少URL解析封装在portlet中。否则它可能需要在servlet中,甚至两者中(例如,在servlet和portlet调用的库中)。

答案 1 :(得分:0)

正如奥拉夫指出的那样,你没有得到一个portlet的URL。您可以获取某个服务器实例中某个站点中某个页面上的portlet实例的URL。

如果您只是想要提供服务JSON的东西(无论页面/网站/实例如何),您就不必为其编写portlet。你可以写出Liferay很乐意为你服务的宁静服务。可以找到一个示例here