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

时间:2014-09-26 17:11:14

标签: java apache-cocoon dspace

如何从反馈页面的修改版本中获取项目的标题,就像在"推荐此项目"在jspui?我也希望生成页面的结果网址,使其像http://example.com/feedback?handle=123456789/123一样。我在上一篇文章中从comment提出了这个问题,但我不知道如何使用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,但现在我不知道我错过了什么。

2 个答案:

答案 0 :(得分:0)

  String handle="1234/1234";

  context=new Context(); // Or reuse the Context:

  dso = HandleManager.resolveToObject(context,handle);

  if (dso instanceof Item){

       DCValue[] titles= dso.getMetadata("dc", "contributor", "author",null); 

       // use titles
  }

答案 1 :(得分:0)

您可以在以下网址获得完整的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/**">

你想要什么。

P.D.-我忘记提及添加SolicitarCorreccionForm的进口:

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

我希望这有帮助。