上传文件并将参数发送到spring portlet控制器

时间:2014-12-13 20:49:13

标签: spring spring-mvc websphere-portal spring-portlet-mvc

你们中的任何人都可以告诉我如何上传文件并使用spring mvc portlet controller将输入参数传递给控制器​​吗?

jsp中的操作URL和表单:

<portlet:actionURL var="addDetailsURL"> 
    <portlet:param name="addDetails" value="addDetailsValue"/> 
</portlet:actionURL>


<div id = "<portlet:namespace/>addDetailsDIV" >
    <form action="${addDetailsURL}" enctype="multipart/form-data" method="post">

        <input style="display:block;" type="text" name="selectedDetail" id='selectedDetail'/> <%-- holds the parameter that is supposed to be passed to the controller --%>
        <table width = 100% cellspacing="5" cellpadding="5">
            <tr>
                <td colspan='2'><fmt:message key = "selectFileUploadTxt"/></td>
            </tr>
            <tr>
                <td colspan='2'><input id="uploadedFile" type="file" name="uploadedFile" /></td>
            </tr>
            <tr>
                <td >
                <span id="<portlet:namespace />closeAddDetailDia">cancel</span>
                </td>
                <td align="left">
                <Button id="uploadButton"><fmt:message key="addDetailButtonTxt" /></Button>

                </td>
            </tr>
        </table>
    </form>
</div>

在提交时,请求将转到控制器,但“selectedDetail”参数为空。

控制器代码:

@RequestMapping("VIEW")
public class AddDetailsController {

    /**
     * 
     * @param actionRequest
     * @param actionResponse
     * @return
     * @throws IOException 
     */
    @SuppressWarnings({ "rawtypes", "unused" })
    @ActionMapping(params = "addDetails=addDetailsValue")
    public String fileUpload(ActionRequest actionRequest, ActionResponse actionResponse,
        @RequestParam String selectedDetail
            ) throws PortletException, IOException {
        System.out.println("selectedDetail : " + selectedDetail); // it is null
        System.out.println("selectedDetail : " + actionRequest.getParameter("selectedDetail")); // it is null

文件上传部分工作正常,但我没有得到“selectedDetail”参数。请帮忙。

环境详情

  1. WebSphere Portal v7002
  2. IDE - RAD v8.5
  3. Spring version 3.1.0
  4. 如果您需要任何其他细节,请与我们联系。

1 个答案:

答案 0 :(得分:-1)

在后端,定义一个bean来保存包含文件的表单数据。

我称之为FormBean。 FormBean应该有一个类型为
的实例变量 private org.springframework.web.multipart.commons.CommonsMultipartFile file;

表单中的更改将包括在表单元素中包含“commandName”和“path”:

&lt; form:form enctype =“multipart / form-data” commandName =“formBean” ... /&gt;

&安培;
&lt; form:input id =“uploadedFile”type =“file”name =“uploadedFile” path =“file” /&gt;

以下链接解释了这一点: HTTPS://portalhub.wordpress.com/2012/05/20/spring-mvc-portlet-file-upload-and-download/