gpt4 book ai didi

java - 使用 DISC 框架的 weblogic portlet 的 AJAX 消费

转载 作者:行者123 更新时间:2023-11-29 09:14:21 25 4
gpt4 key购买 nike

我制作了一个 JSR 168 portlet,如下所示:

public class GetTest extends GenericPortlet {
@Override
public void doView(RenderRequest request, RenderResponse response)
throws PortletException, IOException {
PortletRequestDispatcher rd =
getPortletContext().getRequestDispatcher("/getTest.jsp");
rd.include(request, response);
}
}

此 portlet 名为 getTest.portlet,位于 WebContent 文件夹中。这个的 jsp 页面:

<%
String params = request.getParameter("params");
out.print("Params: " + params);
%>

现在我想使用 Weblogic 的 DISC 框架向这个 portlet 发出 Ajax get 请求。我该怎么做?

我在网上搜索了这方面的内容,但没有找到任何我可以使用的有用示例。我尝试过的是:

在一些other.jsp中:

.....
<script type="text/javascript">
var dataUrl = "/getTest.portlet?params=hi";
var xmlhttp = new bea.wlp.disc.io.XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) {
alert(xmlhttp.responseText);
}
}
xmlhttp.open('GET', dataUrl, true);
xmlhttp.send(null);
</script>
....

在警报中,我一片空白。我应该得到“Params: hi”,因为它在这个 portlet 的 jsp 页面中。我怎样才能做到这一点?

我阅读了以下文章,但没有发现任何有用的内容,或者可能是我遗漏了什么。

我还为附加了此 portlet 的桌面门户启用了光盘。

最佳答案

最后,我自己找到了。我需要使用 JSR 286 portlet 的资源服务功能通过 Ajax 请求获取数据。你需要做的是:

  1. 构建您的 portlet 的资源 URL:<portlet:resourceURL var="homeURL" id="home" escapeXml="false" />
  2. 使用此 url 向您的 portlet 发出 Ajax 请求。

    var path="<%=homeURL.toString()%>";
    request.onreadystatechange=function () {
    if (request.readyState == 4) {
    if (request.status == 200) {
    alert(request.responseText);
    } else {
    alert("Problem retrieving data from server.");
    }
    }
    };
    request.open("GET", path, true);
    request.send(null);
  3. 在 portlet 中将您的逻辑写在 serveResource(ResourceRequest request, ResourceResponse response) 中方法。将数据值设置为请求的属性,然后使用请求调度器将请求、响应转发到 JSP 页面。或者您可以直接将 JSON 格式的数据值写入响应编写器。( response.getWriter() )
  4. 如果您选择将数据传递到 JSP 页面,则在 JSP 页面上从请求属性获取数据并根据需要显示它们。
  5. 如果您选择使用响应编写器以 JSON 格式传递数据,那么您需要在 JavaScritp 中解析该数据,然后以适当的格式显示它们。
  6. 如果您将数据传递给 portlet,您可以像使用 Ajax 请求将数据传递给 servlet 一样轻松地传递它。在这一行request.send(null)而不是 null传递您的数据。

希望这对 future 的访客有所帮助。 :-)

我仍然不确定这是否是最好的方法。随时欢迎任何其他解决方案。

关于java - 使用 DISC 框架的 weblogic portlet 的 AJAX 消费,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10408159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com