如何在ajax调用中调用portlet.java类的特定方法?
我认为我们不可能有两个不同版本的
serveResource方法,就像我们对动作方法所做的那样,至少没有默认实现。
如果要使用其他方法,则必须采用Spring 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>因为门户标签生成页面的片段,而不是整个页面。即使允许,结果页面的格式也不正确,并且在不同的浏览器上的行为也会有所不同。而且,修改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 pre}


