iferay 中处理消息分为 Action 和 Render 两种方式的处理,Action 主要处理表单提交的数据,Render 主要处理超链接等非表单提交的数据,如果我们使用 Action 处理完业务需求后想同时启动另外一个服务时,我们必须借助 Reader ,这是不能自动进入 Reader 必须要回到配置文件中进行二次跳转,做法是:在 Action 中使用 response.setRenderParameter("action","anyName");使其回到配有拦截器的配置文件中,这也相当于另外发 送了一个请求,请求参数为 “anyName” 其中的第一个参数必须为 action 这样配置文件中的拦截器就会认为这是一个请求,并且是一个请求名为 anyName 的请求,如果我们还想在做另一个服务时传递到 Reand 中一些参数时,我们可以在跳转的同时使 用:response.setRenderParameter("propertyName","propertyValue"),传递一个 “字符串” 或者“字符数组” 类型的参数,如果要传递一个 “容器” 那么这个方法就不行了,我们必须使用 request.setAttribute("propertyName",Object); 在 Render 中使用 request.getParameter("propertyName") 即可得到容器。
如果我们在 Action 中处理完我们的业务需求后不需要执行其他的服务而是直接返回到某个页面后者某个地址这是我们可以使用 response.sendRedirect("url"); 方法跳到我们需要去的目标页面或地址,其中 url 是一个字符串类型的地址。
如果在 Render 中处理完我们的业务请求后我们可以使用 ModelAndView 对象跳转到我们想要去的目标页面,同时可以携带参数变量。在页面上如果要取 map 中的值,直接使用 EL 表达式取 如:${ keyProperty }
Action 中业务处理完成后跳到页面上时,如果想携带参数,可以借助跳到 Render 中,借助 ModelAndView 携带传回的参数,也可以直接在 Action 中使用 request.setAttribute("propertyName","propertyValue");
portlet 中 Action 的跳转
最新推荐文章于 2021-05-09 15:15:58 发布