Liferay:如何使enctype =“multipart / form-data”和method =“post”一起工作?

时间:2014-07-21 14:52:17

标签: java jsp servlets liferay

我正在使用liferay门户服务器6.2开发一个Web应用程序

JSP代码 -

    <form id="mainForm" action="<portlet:actionURL/>" method="post" enctype="multipart/form-data" >
<input type="hidden" id="varImport" name="varImport"/>
    <div class="tab-pane" id="uploadFile">
        <p>Please upload a file</p>
        <div id="inputFileDiv">
            <input type="file" name="uploadFile" />
        </div>
    </div>
    <input type="submit" class="btn btn-info" onClick="import()" value="IMPORT" />
    </form>

    <script>
        function import() {
            console.log("importing");
            document.getElementById("varImport").value = "IMPORTFILE";
            document.getElementById("mainForm").submit();
        }
    </script>

Servlet代码 -

@Override
    public void processAction(ActionRequest request, ActionResponse response) throws PortletException, IOException {
        System.out.println("myPortlet.processAction() >> " + request.getParameter("varImport"));

    //... rest of the code.  
}

如果我从jsp表单中删除 enctype ,我会在servlet中获取varImport的值。

但如果我保留它,它将返回null。

我缺少什么?

1 个答案:

答案 0 :(得分:2)

import com.liferay.portal.util.PortalUtil;
UploadPortletRequest uploadRequest = PortalUtil.getUploadPortletRequest(request);
System.out.println("myPortlet.processAction() >> " + uploadRequest.getParameter("varImport"));