如何从反馈页面的修改版本中获取项目的标题,就像在"推荐此项目"在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,但现在我不知道我错过了什么。
答案 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;
我希望这有帮助。