Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 请求映射不会发生_Java_Javascript_Spring_Liferay_Ipc - Fatal编程技术网

Java 请求映射不会发生

Java 请求映射不会发生,java,javascript,spring,liferay,ipc,Java,Javascript,Spring,Liferay,Ipc,我试图通过呈现URL在两个portlet之间进行通信 一个portlet显示包含可用选项列表的表。单击其中一个选项时,javascript函数会呈现URL,并且在第二个portlet中会显示有关所单击项目的详细信息 但是,它不起作用:URL被正确地呈现,具有URL中正确的行id,但是第二个portlet的方法(使用@RenderMapping(params)设置)从未被调用 提前谢谢 第一个portlet view.jsp: <%@page import="java.util.List"%

我试图通过呈现URL在两个portlet之间进行通信

一个portlet显示包含可用选项列表的表。单击其中一个选项时,javascript函数会呈现URL,并且在第二个portlet中会显示有关所单击项目的详细信息

但是,它不起作用:URL被正确地呈现,具有URL中正确的行id,但是第二个portlet的方法(使用
@RenderMapping(params)
设置)从未被调用

提前谢谢 第一个portlet view.jsp:

<%@page import="java.util.List"%>
<%@page import="pl.spot.vorange.model.Project"%>
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>

<div id="projectListDiv"  style="width: 100%;"></div>

<script type="text/javascript">
var pids = new Array();
var pnames = new Array();
var projectId = "${p.id}";
<%
List<Project> all = (List<Project>) request.getAttribute("all");
if(all!=null && !all.isEmpty()) {
int i = 0;
for(Project project : all) {
    out.println("pids[" + i + "]='"+project.getId()+"';\n");
    out.println("pnames[" + i + "]='"+project.getName()+"';\n");
    i++;
}
} else {
    out.println("brak projektów w zasięgu requestu");
}
%>

function createProjectList() {
var tags = "<table width='100%'>";

for(var i=0; i<pids.length; i++) {
    tags += "<tr class='projectTr'>";
    tags += "<td class='orangeArray' onClick='firePortletEvent2(" + pids[i] +  
")'> </td>";

    if(pids[i]!=projectId) {
        tags += "<td class='orangeTableItem' onClick='firePortletEvent2(" +
 pids[i] + ")'>";
    } else {
        tags += "<td class='orangeTableItemSel'  
 onClick='firePortletEvent2(" + pids[i] + ")'>";
    }

    tags += pnames[i] + "</td></tr>";
}

tags += "</table>";
el = document.getElementById("projectListDiv");
if(el!=null) {
    el.innerHTML = tags;
}
}
function firePortletEvent2(projectId) {
var url ="<portlet:renderURL />";   
prefix = "&_offer2_WAR_vorange_";
url += prefix+"a=getproject";
url += prefix+"page=expiring";
url += prefix+"tab=expiringOffers";
url += prefix+"pid="+encodeURI(projectId);
location = url;
}

createProjectList();
</script>
我不知道它是否正常工作,因为从未调用过此方法

我知道代码很乱,但我还没有写。我刚拿到它,我必须把它修好


如果此代码永远无法工作,我不会感到惊讶,但我刚刚开始在Liferay上开发,不知道很多事情。

请粘贴相关代码……更改url后,您是否也在向服务器发回邮件?您是否只需要客户端通信?在这种情况下,我建议你看看下面的答案:和
@RenderMapping(params = "a=getproject")
public String getProject(RenderResponse response, RenderRequest request) {

    String pid = request.getParameter("pid");
    Project p = null;
    if (pid != null) {
        long id = Long.parseLong(pid);
        p = projectService.searchById(id);
        request.getPortletSession().setAttribute("project", p);
    }

    p = (Project) request.getPortletSession().getAttribute("project");
    request.setAttribute("p", p);

    return "view";
}