小编典典

如何从DSpace中的反馈页面的修改版本中获得引荐页面(项目)的标题?

java

我如何从修改后的反馈页面中获取项目的标题,就像在jspui中“推荐此项目”一样?我也希望生成页面的结果网址,例如http://example.com/feedback?handle=123456789/123。我已经在上一篇文章中的评论中提出了这个问题,但是我不知道如何使用HandleManager。我已经使用itemRequestForm的部分代码尝试了很多次,但是我总是会得到空指针错误。

    DSpaceObject dso = HandleUtil.obtainHandle(objectModel);
    if (!(dso instanceof Item)) {
        return;
    }
    Request request = ObjectModelHelper.getRequest(objectModel);
    boolean firstVisit=Boolean.valueOf(request.getParameter("firstVisit"));

    Item item = (Item) dso;

我还尝试查看/ViewArtifacts/sitemap.xmap,但现在我无法找出我所缺少的内容。


阅读 245

收藏
2020-11-30

共1个答案

小编典典

您可以在以下位置获得DS-2099的完整补丁:

https://github.com/arvoConsultores/DSpace/commit/3e971d70daaa4762a443c89fb7fa6f9e5b8e630d.patch

(提示:您可以在github的提交中添加“ .patch”以查看补丁)

我认为在这里发布太久了。

检查SolicitarCorreccionForm以显示标题和想要的内容,使用其他响应从句柄获取数据,而不是:

feedback.addPara(T_para1.parameterize(parameters.getParameter("handle","unknown")));

你应该做:

String handle=parameters.getParameter("handle","unknown");

  // context=new Context(); // Context exist in a form:

  DSpaceOBject dso = HandleManager.resolveToObject(context,handle);

  if (dso instanceof Item){
       Item item=((Item)dso);
       DCValue[] titles= item.getMetadata("dc", "contributor", "author",null);

       feedback.addPara(titles[0].value); // check for nulls or multiple values;
  }

要将标题发送到邮件类别,您应该执行以下操作:

feedback.addHidden("title").setValue(titles[0].value);

并且在Aspects / ViewArtifacts / sitemap.xmap中,您应该设置参数:

<map:transform type="SolicitarCorreccionForm">
<map:parameter name="title" value="{title}" />
...

获取SendSolicitarCorreccionAction并发送到电子邮件,以将参数添加到邮件中,例如:

String title= request.getParameter("title");
email.addArgument(title);    // Titulo
...

您想更改网址

<map:match pattern="solicitarCorreccion/**">

想要什么

PD-我忘了提要添加SolicitarCorreccionForm的导入:

import org.dspace.content.DCValue;
import org.dspace.content.DSpaceObject;
import org.dspace.content.Item;
import org.dspace.handle.HandleManager;

希望对您有所帮助。

2020-11-30