Java 在liferay中上载包含元数据的文档

Java 在liferay中上载包含元数据的文档,java,jakarta-ee,liferay-6,Java,Jakarta Ee,Liferay 6,我正在尝试上载带有元数据的文档。简单文件上传器portlet工作正常,但当我尝试附加元数据时,它发送请求失败错误 这是我的密码 public DLFileEntry upload(ActionRequest request, ActionResponse response) throws Exception { // TODO Auto-generated method stub ServiceContext sc = new ServiceContext(); Da

我正在尝试上载带有元数据的文档。简单文件上传器portlet工作正常,但当我尝试附加元数据时,它发送请求失败错误

这是我的密码

public DLFileEntry upload(ActionRequest request, ActionResponse response)  throws Exception 
{
    // TODO Auto-generated method stub
    ServiceContext sc = new ServiceContext();
    Date date1 = (Date) request.getAttribute("efrom");
    Date date2 = (Date) request.getAttribute("efrom");
    String getTitle = request.getParameter("Title");
    String getDesc = request.getParameter("Description");
    String CKEditor = request.getParameter("CKE");

    ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);
    long defaultRepoId = DLFolderConstants.getDataRepositoryId(themeDisplay.getScopeGroupId(), DLFolderConstants.DEFAULT_PARENT_FOLDER_ID);

    String rtfoutput = FileIO.readFromFile(tPath);

    File tempFile = new File(tPath);
    InputStream is = new FileInputStream(tempFile);

    Folder folderName = DLAppLocalServiceUtil.getFolder(defaultRepoId, 0, "Folder Name");
    long folderId = folderName.getFolderId();
    long repositoryId = folderName.getRepositoryId();

    byte[] bytes = rtfoutput.getBytes();

    Map<String, Fields > fieldsMap = new HashMap<String, Fields >();
    Fields targetFields = new Fields();
    targetFields.put(new Field("Effective-To", date1));
    targetFields.put(new Field("Effective-From", date2));

    fieldsMap.put("", targetFields);

    DLFileEntry dlFileEntry = DLFileEntryLocalServiceUtil.addFileEntry(defaultRepoId, 0L, repositoryId, folderId, getTitle+".rtf", "RichTextFormat", getTitle, StringPool.BLANK, StringPool.BLANK, 0L,
            fieldsMap, tempFile, is, tempFile.getTotalSpace(), sc);

    return dlFileEntry;
}
公共DLFileEntry上载(ActionRequest请求、ActionResponse响应)引发异常
{
//TODO自动生成的方法存根
ServiceContext sc=新的ServiceContext();
Date date1=(Date)request.getAttribute(“efrom”);
Date date2=(Date)request.getAttribute(“efrom”);
字符串getTitle=request.getParameter(“Title”);
字符串getDesc=request.getParameter(“Description”);
字符串CKEditor=request.getParameter(“CKE”);
主题显示主题显示=(主题显示)request.getAttribute(WebKeys.THEME\u DISPLAY);
long defaultRepoId=DLFolderConstants.getDataRepositoryId(主题显示.getScopeGroupId(),DLFolderConstants.DEFAULT\u父文件夹\u ID);
字符串rtfoutput=FileIO.readFromFile(tPath);
文件tempFile=新文件(tPath);
InputStream is=新文件InputStream(tempFile);
Folder folderName=DLAppLocalServiceUtil.getFolder(defaultRepoId,0,“文件夹名称”);
long folderId=folderName.getFolderId();
long repositoryId=folderName.getRepositoryId();
byte[]bytes=rtfoutput.getBytes();
Map fieldsMap=新的HashMap();
Fields targetFields=新字段();
targetFields.put(新字段(“生效日期”),日期1);
targetFields.put(新字段(“生效日期”,日期2));
fieldsMap.put(“,targetFields”);
DLFileEntry DLFileEntry=DLFileEntryLocalServiceUtil.addFileEntry(defaultRepoId,0L,repositoryId,folderId,getTitle+“.rtf”,“RichTextFormat”,getTitle,StringPool.BLANK,StringPool.BLANK,0L,
fieldsMap,tempFile,is,tempFile.getTotalSpace(),sc);
返回dlFileEntry;
}
我不明白为什么这是说请求失败


date1和date2是我试图用文档附加的元数据数据

我认为您不能简单地添加自定义元数据。每个FileEntryType都有一个可能的metada字段集合,这些字段由DDMSStructure描述。但是,您应该首先创建/更新文件类型的DDM结构,然后放入新的元数据。有关liferay的源代码和本文的更多详细信息,请参阅: