Liferay 门户组件响应 : how to set status code?

标签 liferay portlet

我有一个简单的方法在我的 liferay portlet 中接受 PortletResponse 和 PortletRequest

public void remove(PortletResponse response, PortletRequest request) {

}

我想将响应状态设置为 404,就像我可以通过 httpResponse.sendError(HttpServletResponse.SC_BAD_REQUEST) 对 HttpServletResponse 做的那样

你能告诉我怎么做吗?

最佳答案

什么是Portlet Specification 2.0不得不说-您只能在处理资源请求时设置响应状态:

If the portlet want to set a response status code it should do this via setProperty with the key ResourceResponse.HTTP_STATUS_CODE.

这意味着,您可以在提供资源时以这种方式设置响应状态代码:

resourceResponse.setProperty(ResourceResponse.HTTP_STATUS_CODE, 
                             Integer.toString(HttpServletResponse.SC_BAD_REQUEST));

使用 Liferay,您可以获得底层 HttpServletResponse 的实例并在那里设置状态代码。门户会将其返回给客户端。这样,您可以设置任何门户请求的响应状态,而不仅仅是资源请求。

HttpServletResponse httpServletResponse = PortalUtil.getHttpServletResponse(portletResponse);
httpServletResponse.setStatus(HttpServletResponse.SC_BAD_REQUEST);

但是,像 Olaf Kock 的回答中解释的那样,强烈反对这种做法。查看它以获得更大的画面。

关于Liferay 门户组件响应 : how to set status code?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33624798/

相关文章:

permissions - 当我将 portlet.properties 文件添加到 portlet 时,为什么会收到 HotDeployException? (Liferay 门户开发)

java - Liferay 中不同的 "request"隐式对象

java - 在 Liferay 中获取网页内容的最新工作流程状态

java - 仅在用户登录时显示 portlet

java - 在 pluto 2.0 中创建和部署简单 java portlet 的教程

Liferay 6.1 DLApp * API : How to get images?

liferay - 在 Liferay Portal 中隐藏或禁用特定语言的 Portlet

java - 在单独的 war 文件中的 portlet 之间共享 bean

java - 为 Liferay 开发 portlet 的限制/缺点

java - Liferay 7.3.5GA6自定义索引搜索和ddmFieldArray