Liferay Portal(四)jsp中URL传参给portlet

每个portlet都有自己对应的view.jsp文件,jsp文件中可以通过form表单的形式向对应的portlet传递参数,然后在portlet中处理这些请求。下面介绍两种jsp的form请求:actionURL和renderURL。

一:actionURL

一般ActionURL适用于有确实的Action(行为)的情况下。比如说,表单form提交后Persistent状态的改变、session的改变、perference的修改等等。

在jsp页面中:

<portlet:actionURL  var="actionURL" windowState="normal" portletMode="view">
<portlet:param name="action" value="doAction"/>
</portlet:actionURL>

<form action="<%=actionURL%>" method="post">  
<input type="submit" value="doAction"/>  
</form>  

当jsp文件发送ActionURL请求的时候,服务器自动调用对应portlet中的processAction()方法。在这个方法中使用actionRequest.getParameter("action")接收参数。代码如下:

public void processAction(ActionRequest actionRequest,ActionResponse actionResponse) throws IOException, PortletException {
     String action = actionRequest.getParameter("action");                                  System.out.println(action);                                                         super.processAction(actionRequest, actionResponse);                                                               }

二:renderURL 

这个renderURL通常用来处理Portlet的导航。

在jsp页面中:

<portlet:renderURL  var="renderURL" windowState = "normal" portletMode = "view">  
<portlet:param   name = "action"   value = "doView" />    
</portlet:renderURL>

<form action="<%=renderURL%>" method="post">  
<input type="submit" value="doView"/>  
</form>  

当jsp文件发送renderURL请求的时候,服务器先调用对应portlet中的processAction()方法,然后又调用doView()方法,当参数在processAction()方法中被接收的时候,还得再将参数设置到render请求中,才能将参数传递给doView()方法。代码如下:

public void processAction(ActionRequest actionRequest,ActionResponse actionResponse) throws IOException, PortletException {
     String action = actionRequest.getParameter("action");
     actionResponse.setRenderParameter("action", action);                                 super.processAction(actionRequest, actionResponse);
}

public void doView(RenderRequest renderRequest,RenderResponse renderResponse) throws IOException, PortletException {
    renderResponse.setContentType("text/html");
    String action = renderRequest.getParameter("action");
    renderResponse.getWriter().println(action);                                                                                 super.doView(renderRequest, renderResponse);
}

以上就是jsp中两种URL传参到portlet的处理过程,注意表单提交最好使用Post方法而不是Get方法,因为某些Portlet服务器可能会将内部状态编码到URL的Query字符串中。

转载于:https://my.oschina.net/chenhao901007/blog/126294

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值