Как я могу получить заголовок ссылающейся страницы (элемента) из модифицированной версии страницы обратной связи в DSpace?
Как я могу получить название элемента из модифицированной версии страницы обратной связи, как в "Рекомендовать этот элемент" в 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, но сейчас мне не понятно, чего мне не хватает.
2 ответа
Вы можете получить полный патч DS-2099 по адресу:
https://github.com/arvoConsultores/DSpace/commit/3e971d70daaa4762a443c89fb7fa6f9e5b8e630d.patch
(СОВЕТ: вы можете добавить ".patch" к коммиту на github для просмотра патча)
Я думаю, что это слишком долго, чтобы оставлять сообщения здесь.
Проверьте 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);
А в аспектах / ViewArtifacts / sitemap.xmap вы должны установить параметр:
<map:transform type="SolicitarCorreccionForm">
<map:parameter name="title" value="{title}" />
...
Получите на SendSolicitarCorreccionAction и отправьте по электронной почте, чтобы добавить параметры к почте, как:
String title= request.getParameter("title");
email.addArgument(title); // Titulo
...
Вы хотели бы изменить URL-адрес с
<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;
Я надеюсь, что это поможет.
Пытаться
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
}