如何通过AJAX调用将数据从页面传递到Portlet类?

时间:2015-06-12 19:59:38

标签: ajax jsp liferay portlet

我试图在AJAX中传递一个值' GET'请求我的Portlet课程,但我无法找到一种方法来访问类中的变量值。我的AJAX代码是:

function loadXMLDoc() 
{           
   var nocache = new Date().getTime();
   var xmlhttp=new XMLHttpRequest();
   var url = "${mURL}";
   url += '?cache=' + nocache + '&nRows=' + numberOfRows;   // Generate unique request URL
   xmlhttp.open("GET", url,true);
   xmlhttp.onreadystatechange = function()
   {        
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
      { 
          document.getElementById("contentContainer").innerHTML= xmlhttp.responseText;
      } 
   }    
   xmlhttp.send();
}

哪里' nRows'是我试图传递给我的Portlet类的变量。 我尝试检索变量值的portlet类的一部分是:

@Override
 public void serveResource(ResourceRequest request, ResourceResponse response) throws PortletException,IOException
 {                      
     /* Returns null */
     String nRows = request.getParameter("nRows");

     response.setContentType("text");           
     response.resetBuffer();
     String htmlContent = htmlInterpreter.getParsedHTML();
     response.getWriter().print(htmlContent);
     response.flushBuffer();                                 
 }

有关替代方案的任何想法,以获取' nRows'在serveResource(...)方法?提前谢谢!

1 个答案:

答案 0 :(得分:1)

我建议将liferay <portlet:resourceURL var="resourceURL"> </portlet:resourceURL> AlloyUI 一起使用,而不是使用简单的xmlhttp功能。

liferay-portlet.xml

中更改所需的命名空间参数
<requires-namespaced-parameters>false</requires-namespaced-parameters>

添加以下导入

    <%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
<portlet:defineObjects />

将网址更改为

url += '?cache=' + nocache + '&<portlet:namespace/>nRows=' + numberOfRows; 

请使用 ParamUtil

查找以下代码以获取参数
@Override
 public void serveResource(ResourceRequest request, ResourceResponse response) throws PortletException,IOException
 {                      
     /* Returns null */
     String nRows = ParamUtil.getString(resourceRequest, "nRows");

     response.setContentType("text");           
     response.resetBuffer();
     String htmlContent = htmlInterpreter.getParsedHTML();
     response.getWriter().print(htmlContent);
     response.flushBuffer();                                 
 }

有关详情,请关注此链接:

http://liferayway.blogspot.in/2013/08/ajaxjsonliferay-example.html

希望它可以帮助你。!!