0

jspui の「このアイテムをお勧めします」のように、修正版のフィードバック ページからアイテムのタイトルを取得するにはどうすればよいですか? また、ページの結果の URL をhttp://example.com/feedback?handle=123456789/123のように生成したいと考えています。以前の投稿のコメントで質問したのですが、HandleManager の使い方がわかりません。itemRequestForm のコードの一部を使用して何度も試しましたが、常に null ポインター エラーが発生します。

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

そして、aspects/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;

これが助けになることを願っています。

于 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 に答える