在Web表单portlet中附加文件

时间:2017-07-27 10:09:55

标签: liferay

我正在尝试在liferay的Web表单portlet中添加一个字段来上传文件。目前我能够在我的表单中添加此字段,但无法在服务器/提到的位置获取附加文件。我得到一个空指针异常。以下是我在4个Web表单portlet文件中所做的更改。

edit_field.jsp

   <aui:option selected='<%= fieldType.equals("file") %>' value="file">
   <liferay-ui:message key="file" /></aui:option>

view.jsp的

 <c:when test='<%= fieldType.equals("file") %>'>
     <tr>
      <td class="order-table-label">
        <label><%= HtmlUtil.escape(fieldLabel) %></label>
     </td>
     <td>
     <aui:input cssClass='<%= fieldOptional ? "optional" : StringPool.BLANK 
    %>' label="" name="<%= fieldName %>" type="file" value="
    <%=HtmlUtil.escape(fieldValue) %>"/>
    </td>
   </tr>
 </c:when>

ConfigurationActionImpl.java

  boolean isFileUpload = false;

  if("file".equals(fieldType))
  {
   isFileUpload = true;
   }
  preferences.setValue("isFileUpload" + i, String.valueOf(isFileUpload));

WebFormPortlet.java

  UploadPortletRequest uploadRequest = 
  Portalutil.getUploadPortletRequest(actionRequest);

  File uploadedFile = uploadRequest.getFile("file");

  String sourcefileName = uploadRequest.getFileName(uploadedFile.getName());
  (Throws NULL pointer exception on this line)

  File folder = new File("\tmp\uploadedfile");

  File filepath = new File(folder.getAbsolutePath() + File.seperator + 
  sourcefileName);

  FileUtils.copyFile(uploadedFile ,filepath);

1 个答案:

答案 0 :(得分:0)

我会将文件存储在文档库中而不是tmp路径中,这实际上与门户网站本身的范围完全不同。

你需要portlet的邮件功能吗?我不认为您的自定义将适用于此用例

看起来npe声明请求中没有文件,或者没有该名称,您是否已经查看了该请求?