0

如何从修改后的反馈页面中获取项目的标题,就像在 jspui 中的“推荐这个项目”中一样?我也希望生成页面的结果 url 就像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 但现在我无法弄清楚我错过了什么。

4

2 回答 2

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);

在 aspect/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;

我希望这会有所帮助。

于 2014-09-30T12:00:00.130 回答
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
  }
于 2014-09-29T15:18:40.887 回答