0

Alfresco共有で複数のタスクを検証したい。タスク インターフェイスの行ごとにチェックボックスを追加し、検証するボタンを追加しました。タスクの検証には時間がかかることがあるため、進行状況バーを表示して、まだ検証されているタスクの数を知らせたいと考えています。

x 秒ごとにプログレス バーを更新できるように、一種のカウンターを維持するための Web スクリプトを作成しました。その情報を保存して alfresco share に取得するための最良のソリューションは何でしょうか? 変数をセッションに保存しようとしましたが、成功しませんでした。

誰かが私にやり方を教えてもらえますか?

事前にThx

編集ここで私が試したものです

public class HttpSessionHelper extends BaseScopableProcessorExtension {

public void setInSession(String paramName, String paramValue) {
    HttpSession session = ServletUtil.getSession();
    session.setAttribute(paramName, paramValue);
}

public String getFromSession(String paramName) {
    HttpSession session = ServletUtil.getSession();

    Object paramValue = session.getAttribute(paramName);
    if (paramValue != null) {
        return paramValue.toString();
    } else {
        return null;
    }
}
}

Bean 定義

<bean id="tasksProgression" parent="baseJavaScriptExtension" class="com.test.HttpSessionHelper">
  <property name="extensionName">
     <value>tasksProgression</value>
  </property>
</bean>

Alfresco Web スクリプト: validation-state.lib.js

function getValidationState(){  
tasksProgression.setInSession("test",5);
return tasksProgression.getFromSession();
}

setInSession に入ると、ServletUtil.getSession() が null を返す

4

3 に答える 3

1

解決策は、Java ベースの Web スクリプトを使用することでした。

public class GetValidationProgressionBean extends DeclarativeWebScript {

@Override
protected Map<String, Object> executeImpl(WebScriptRequest req, Status status, Cache cache) {
    String sessionVar = "progressionState"; 

    WebScriptSession session = req.getRuntime().getSession();
    Integer counter = (Integer) session.getValue(sessionVar);



    session.setValue(sessionVar, Integer.valueOf(counter.intValue() + 1));
    counter = (Integer) session.getValue(sessionVar);

    //put all the objects that you need in renditions to the model map
    Map<String, Object> model = new HashMap<String, Object>();
    model.put(sessionVar, counter);
    return model;
}


}
于 2013-07-10T08:20:59.263 に答える
0

別の方法は、クライアント側で進行状況を管理することです。たとえばAlfresco.util.setVar("your var", "your value")、ブラウザ JS で使用します。ただし、これは、ユーザーが同じタブ/ウィンドウにとどまっている場合にのみ機能します

于 2013-07-04T08:39:16.410 に答える