Portlet对动作的处理过程

在一个标准的Web应用程序中,一个HTML表单提交将导致执行一些业务逻辑。业务处理的结果,要么作为属性而被设置在请求或会话中并转发,要么包含到下一个JSP。

  在一个JSR 168 portlet中,一个HTML表单的动作URL应该是什么样呢?JSR 168定义了一个JSP标签库,称为portlet taglib。HTML表单的动作URL可以使用actionURL portlet标签生成。例如(请参考favoriteColorEdit.jsp文件):
<form action="<portlet:actionURL/>" method="post">
...
</form>
提交该HTML表单将会导致调用portlet的processAction(ActionRequest aRequest, ActionResponse aResponse)方法。像通常一样,可以通过调用request对象的getParameter()方法来获得表单参数。注意:通过提交表单调用动 作,但portlet中却没有processAction()方法,将会导致javax.portlet.PortletException。

  processAction()方法设置response对象中的值。不要使用ActionRequest或ActionResponse对象的 setAttribute()方法。 值不会从processAction()传递到render()方法,而且在JSP中是不可用的。相反要使用 ActionResponse对象的setRenderParameter()方法。这些render参数将对所有后续render请求可用,这一点与典型的Web应用程序请求属性很不相同。典型的Web application请求属性只对于一个请求可用。另一方面,render请求参数对于许多后续render请求可用。render参数保持可用直到值 被动作的重新执行显式地修改或删除。

  考虑portlet FavoriteColor。它在VIEW模式显示了一个用户偏好的颜色,但是可以在EDIT模式下更改。在EDIT模式下提交偏好的颜色选择将调用 processAction()方法。该方法获得偏好的颜色请求参数,并将其设置为render参数。这样,偏好的的颜色render参数将在所有后续 render请求中都可用。

  所呈现的参数是怎样显示在JSP上的呢?应使用来自portlet标签库的defineObjects标签来定义portlet对象。该标签使renderRequest、renderResponse和portletConfig portlet对象在页面中可用。参数通过调用renderRequest对象的getParameter()方法来显示。请参考与所包含的源代码示例中的favoriteColorView.jsp。

  portlet FavoriteColor也展示了其他概念。第一个是如何在processAction()方法中用编程的方法改变portlet模式。调用 ActionResponse对象的setPortletMode()方法来修改portlet模式。第二个概念是如何使用一个HTML链接来修改 portlet模式。该链接使用来自portlet标签库的renderURL标签生成。根据希望的portlet模式指定portletMode属性的 值。请参考源代码示例中的FavoriteColorPortlet类和favoriteColorView.jsp页面。

转载于:https://www.cnblogs.com/sohanyu/archive/2013/01/29/2881671.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值