我有一个简单的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。我怎样才能做到这一点?我应该提供什么网址?
答案 0 :(得分:1)
一个portlet有一个URL,具体取决于它所在的页面,然后可能在实例上,因为它可以多次添加到页面中。因此,人们无法真正了解"" URL。如果这是正确的portlet代码,则应该将其调用或至少URL解析封装在portlet中。否则它可能需要在servlet中,甚至两者中(例如,在servlet和portlet调用的库中)。
答案 1 :(得分:0)
正如奥拉夫指出的那样,你没有得到一个portlet的URL。您可以获取某个服务器实例中某个站点中某个页面上的portlet实例的URL。
如果您只是想要提供服务JSON的东西(无论页面/网站/实例如何),您就不必为其编写portlet。你可以写出Liferay很乐意为你服务的宁静服务。可以找到一个示例here。