如何使用actionURL在参数中发送选定的id?

时间:2014-01-06 20:52:44

标签: java eclipse liferay portlet portal

这是我的view.jsp:

<portlet:actionURL name="getTravelId" var="travelIdUrl">
</portlet:actionURL>
for (Travel t : list) {
    <a href="<%=travelIdUrl%>"><%=t.getId() %></a>
}

然后在课堂上:

 @ProcessAction(name="getTravelId")
        public void getSelectedTravelId(ActionRequest request, ActionResponse response){

        String idTravel = request.getParameter("idTravel");

        System.out.println("TRAVEL ID: " + idTravel);

    }

我尝试发送如下参数:

  <a href="<%=travelIdUrl%>?travelId="<%=t.getId()%>""><%=t.getId() %></a>

但没有工作。

还尝试将actionURL放入其中,仍然无法正常工作

 for (Travel t : list) {
 <portlet:actionURL name="getTravelId" var="travelIdUrl">
        <portlet:param name="idTravel" value="<%t.getId()%>"/>
    </portlet:actionURL>
 <a href="<%=travelIdUrl%>"><%=t.getId() %></a>
    }

有没有人有解决方案?感谢..

2 个答案:

答案 0 :(得分:2)

您肯定使用<portlet:param>标记在正确的路径上向portlet URL添加参数。也许你可以尝试使用更多的JSTL和更少的scriptlet。尝试更像下面的代码段。

<c:forEach items='${list}' var="travel">
    <portlet:actionURL name="getTravelId" var="travelIdUrl">
        <portlet:param name="idTravel" value="${travel.id}"/>
    </portlet:actionURL>
    <a href="${travelIdUrl}">${travel.id}</a>
</c:forEach>

答案 1 :(得分:1)

在上一个例子中究竟什么不起作用?我认为你正在将Java代码与HTML和标签混合在一起。在JSP中尝试这个例子:

<c:forEach var="t" items="${list}">
  <portlet:actionURL name="getTravelId" var="travelIdUrl">
    <portlet:param name="idTravel" value="${t.id}"/>
  </portlet:actionURL>
 <a href="${travelIdUrl}">${t.id}</a>
</c:forEach>

它使用给定的id参数为list中的每个项创建一个锚点。该示例仅使用HTML和标记以及JSP表达式语言来访问变量。