我试图在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(...)
方法?提前谢谢!
答案 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
希望它可以帮助你。!!