2017-02-01 9 views
0

javascript関数の変数を、コントローラが表示するオブジェクトから取得しようとしています。Spring mvc controller変数をjavascriptに渡す方法

私が働いているオブジェクトはBpmsnです。 Iビューにオブジェクトを注入コントローラを介して

enter image description here

。コントローラの

私の方法は次のとおりです。

@RequestMapping(value = "/display") 
public ModelAndView index2(@RequestParam int bpmsnId) { 
    ModelAndView result; 
    Bpmsn bpmsn; 

    bpmsn = bpmsnService.findOne(bpmsnId); 

    result = new ModelAndView("editor/display"); 
    result.addObject("bpmsn", bpmsn); 

    return result; 
} 

この方法は、私は、オブジェクトの表示を行うために使用します。

jspビューでは、javascriptスクリプトで使用するtextXML以外のオブジェクトの属性を挿入します。 textXMLで

<div> 
<ul> 
    <li><b><spring:message code="bpmsn.ticker" />:</b> <jstl:out 
      value="${bpmsn.ticker}" /></li> 
    <li><b><spring:message code="bpmsn.title" />:</b> <jstl:out 
      value="${bpmsn.title}" /></li> 
    <li><b><spring:message code="bpmsn.summary" />:</b> <jstl:out 
      value="${bpmsn.summary}" /></li> 
    <li><b><spring:message code="bpmsn.authoredMoment" />:</b> <jstl:out 
      value="${bpmsn.authoredMoment}" /></li> 
    <li><b><spring:message code="bpmsn.likes" />:</b> <jstl:out 
      value="${bpmsn.likes}" /></li> 
    <li><b><spring:message code="bpmsn.dislikes" />:</b> <jstl:out 
      value="${bpmsn.dislikes}" /></li> 
</ul> 
私はBPMNモデラーにそのXMLをインポートするJavaScript関数を作成したい属性が、私はからの眺めに注入されたオブジェクトのtextXML属性を取得する方法がわかりませんJavaScriptのスクリプト

は、私は、ビューのような属性を呼び出そうとしましたが、それはこれがので動作しません

<script type="text/javascript"> 
    var bpmnXML = ${bpmsn.textXML}; //not work 
    alert(bpmnXML) 
    // BpmnJS is the BPMN viewer instance 
    var viewer = new BpmnJS({ 
     container : '#canvas' 
    }); 

    // import a BPMN 2.0 diagram 
    viewer.importXML(bpmnXML, function(err) { 
     if (err) { 
      // import failed :-(
      alert('could not import BPMN 2.0 diagram', err); 
     } else { 
      // we did well! 
      var canvas = viewer.get('canvas'); 
      canvas.zoom('fit-viewport'); 
     } 
    }); 

答えて

1

モデルに格納されたJavaオブジェクトは、クライアント側で実行されるため、スクリプトではアクセスできません。

JSONでオブジェクトをシリアライズしてモデルに追加し、JavaScriptでアクセスすることは簡単で簡単な方法です。

このようなものが必要です。

ObjectMapper objectMapper = new ObjectMapper(); 
result.addObject("bpmsn", objectMapper.writeValueAsString(bpmsn)); 

これはスクリプトで簡単にアクセスできます。

var bpmnJsonString = '${bpmsn}'; 
Obj bpmn = JSON.parse(bpmnJsonString); 
var bpmnXML = bpmn.textXML; 
alert(bpmnXML) 

あなたの問題を解決したいと考えています。

+0

ありがとう、私はとても助けになりました。私は私の問題を解決することができた – josandluq

0

動作しません。はクライアント側でのみ実行されます。

1つの解決策は、サーバー側で実行される値${bpmsn.textXML}の属性を持つ隠しフィールドを導入できることです。あなたはjavascriptでこの値にアクセスすることができます(私は例としてjQueryを使用します)。

+0

このために非表示のフィールドは必要ありません。既存の要素をそのまま使用してください。データ( "textxml") –

+0

@CagatayKalanそれもうまくいく、私は懸念を分けたいので私は隠しフィールドを使用した。どう思いますか? –

関連する問題