如何通过 AJAX 调用将数据从页面传递到 Portlet class?
How to pass data from page to Portlet class through AJAX call?
我正在尝试将 AJAX 'GET' 请求中的值传递给我的 Portlet class,但我无法完全找到访问此类变量值的方法在 class。我的 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 class 的变量。
我尝试检索变量值的 portlet class 部分是:
@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();
}
关于在 serveResource(...)
方法中访问 'nRows' 的值的替代方法有什么想法吗?提前致谢!
我建议将 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改成下面的
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();
}
有关详细信息,请关注此 link:
http://liferayway.blogspot.in/2013/08/ajaxjsonliferay-example.html
希望对您有所帮助!!
我正在尝试将 AJAX 'GET' 请求中的值传递给我的 Portlet class,但我无法完全找到访问此类变量值的方法在 class。我的 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 class 的变量。 我尝试检索变量值的 portlet class 部分是:
@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();
}
关于在 serveResource(...)
方法中访问 'nRows' 的值的替代方法有什么想法吗?提前致谢!
我建议将 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改成下面的
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();
}
有关详细信息,请关注此 link:
http://liferayway.blogspot.in/2013/08/ajaxjsonliferay-example.html
希望对您有所帮助!!