如何在 ajax 调用中调用 portlet.java 类的特定方法?
我认为我们不能有两个不同的版本serveResource
像我们对操作方法所做的那样的方法至少不是默认实现。
如果你想要不同的方法,你必须去春季MVC(@ResourceMapping)拥有这样的方式。
不过,您可以在您的中定义不同的逻辑serveResource
方法使用resourceId
如下 (一个完整的例子):
在 JSP 中:
<portlet:resourceURL var="myResourceURL" id="myResourceID01" />
在 portlet 类中serveResource
方法将包含以下代码:
String resourceID = request.getResourceID();
if(resoureID.equals("myResourceID01")) {
// do myResourceID01 specific logic
} else {
// else do whatever you want
}
请牢记【重要】
在 portlet 中您不应该使用<html>
, <head>
, <body>
标签,因为 portlet 生成页面片段而不是整个页面。即使允许,您生成的页面也不会格式良好,并且在不同浏览器上的行为会有所不同。而且修改 DOM 元素的 javascript 将完全无用。
之后编辑这条评论:
您还可以将 ajax 与操作方法一起使用:
人们使用<portlet:actionURL>
使用ajax通常用于<form>
-POST
.
为此actionURL
在 jsp 中以稍微不同的方式生成,如下所示:
<portlet:actionURL name="ajax_AddAdvertise" var="addToDo" windowState="<%= LiferayWindowState.EXCLUSIVE.toString()%>">
</portlet:actionURL>
在您的 portlet 中您可以拥有(如问题中所示):
@ProcessAction(name = "ajax_AddAdvertise")
public void ajax_AddAdvertise(ActionRequest request, ActionResponse response) {
// ... your code
}