我正在为 Liferay 6.0.6(Plugins SDK 6.1)开发一个 JSF 2.0 portlet,并且我需要文件上传功能。我尝试了以下不同的解决方案但没有成功:
- Tomahawk
- overriding
ActionRequest
processing bridge:inputFile
组件
欢迎任何关于如何做到这一点的建议,也欢迎黑客或使用 JSF 之外的其他技术。
最佳答案
为什么不使用标准 HTML 表单呢:
<form action="your_action_goes_here" method="post" enctype="multipart/form-data">
<input type="file" name="file" id="file" />
<input type="submit" name="submit" value="Submit" />
</form>
然后在您的 Java 代码中重写 processAction 方法(通常在扩展 GenericPortlet 或 Liferay 的 MVCPortlet 或 JSPPortlet(对于 5.2.3)的类中),然后您可以通过以下方式获取文件本身:
public void processAction(ActionRequest actionRequest, ActionResponse actionResponse) {
UploadPortletRequest uploadRequest = PortalUtil.getUploadPortletRequest(actionRequest);
File file = (File) uploadRequest.getFile("file");
// Do something with your file here
}
工作完成了! :) 这只是骨架代码,您需要执行异常处理,但您的 IDE 将对此提供帮助。
~~编辑~~~
也许可以使用其他可能的解决方案:
HttpServletRequest req = FacesUtil.getRequest();
UploadPortletRequest uploadRequest = PortalUtil.getUploadPortletRequest(req);
这是我从:http://ironicprogrammer.blogspot.com/2010/03/file-upload-in-jsf2.html得到的
这有什么帮助吗?
关于java - 如何在 Liferay 6.0.6 中的 JSF portlet 中上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8779421/