2012-04-11 16 views
0

私はdojoスライダを使用してGUIを作成しています。スライダーの横には、スライダーの現在の値を表示するためのテキストボックスがあります。javascript関数の引数をjavaコードに渡す

スライダをスライドさせるたびに、スライダの現在の値がテキストボックスに表示されます。次に、この値がさらに計算に使用され、結果が別のテキストボックスに表示されます。

私がやっていることは:dojoスライダーの中で、私はスライダーの現在の値を渡すjavascript関数を呼び出します。

javascript関数の中で、関数の引数を関数内のjavaコードに渡したいと思います。引数はJavaコードによって計算を行うために使用されます。

私の問題は、Javaコードに引数を渡すことができなかったことです。私の質問は私がそれをどうやってすることができるかということです以下は

は、私が書かれている符号化である:

<head> 
<script type="text/javascript"> 
dojo.require("dijit.form.Slider"); 
dojo.require("dijit.form.TextBox"); 

dojo.ready(function(){ 
var slider = new dijit.form.HorizontalSlider({ 
name: "slider", 
value: dojo.byId("walluvalueinit").value, 
minimum: 0,  
maximum: 1,  
discreteValues:11, 
intermediateChanges: true, 
style: "width:300px;", 
onChange: function(value){ 
    dojo.byId("walluvalue").value = value; 
    changewalluvalue(value); //CALLING FUNCTION changewalluvalue() 
} 
}, "slider"); 
}); 

</script> 
</head> 

<body class="claro"> 
<jsp:useBean id="beanAnalysis" class="bean.Analysis" scope="application"/> 

<script> 
function changewalluvalue(value){ 
<% 
ExteriorUnheatedGroundLossCalculation eug = new ExteriorUnheatedGroundLossCalculation(); 

    //MORE CALCULATIONS 
    //SET U VALUES PROPERTY IN ExteriorUnheatedGroundLossCalculation 
    eug.setWallUValue(value); //THE ARGUMENT "value" SHOULD BE PASSED HERE 

====more java code===== 
%> 
} 
</script> 

<form id="form1" name="form1" method="post" action=""> 
<tr> 
    <td width="150">Wall U Value</td> 
    <td width="411" align="center" valign="middle"><div id="slider"></div></td> 
    <td width="154" align="center" valign="middle"><label for="walluvalueinit"></label> 
     <input type="text" name="walluvalueinit" id="walluvalueinit" value="${beanAnalysis.wallUValue}"/></td> 
    <td width="152" align="center" valign="middle"><label for="walluvalue"></label> 
     <input type="text" name="walluvalue" id="walluvalue" /></td> 
</tr> 

<td colspan="2" align="center">Transmission Loss</td> 
    <td align="center" valign="middle"><label for="transmissionlossinit"></label> 
     <input type="text" name="transmissionlossinit" id="transmissionlossinit" value="${beanAnalysis.transmissionLoss}"/></td> 
    <td align="center" valign="middle"><label for="transmissionloss"></label> 
     <%--CALCULATION RESULT WILL BE DISPLAYED HERE--%> 
     <input type="text" name="transmissionloss" id="transmissionloss" /></td> 
</form> 
</body> 

答えて

0

それはあなたがあなたのJavaコードに値を渡すためにAJAXを使用する必要があります可能性があります。私はDojoにそれ用のユーティリティがいくつかあると思います。また、要求を処理して実際のロジックを実行するために、Javaコードを計測する必要があります。

+0

回答ありがとう@beberaw。私はそれを試してみます。 – user1221330

+0

1つの質問:jspからajax呼び出し元に応答を渡すにはどうすればよいですか? AJAXのチュートリアルから 、私はASPが使用することを見つける: response.expires = -1 のResponse.Write(値) とPHPを使用しています: $回答を= $値; しかし、jspのサンプルが見つかりませんでした。あなたはjspでそれをする方法を私に見せてもらえますか? – user1221330

+0

こんにちは。私は実際にJSPを使用していません。しかし、原則はいたる所でほぼ同じです。いくつかのJSP固有のチュートリアル(http://www.ajaxprojects.com/ajax/tutorialdetails.php?itemid=580)を参照してください。 Dojoでの作業に適応してください。 –

0

JSP内のクライアント側のJavaScriptがサーバー側のJavaメソッドを呼び出せないため、動作しません。 2つのオプションがあります:(1)JavaScriptで計算を実装する、または(2)計算を実行するサーバー側サービスにAjax呼び出しを行う、

+0

ありがとう@cebarett、私はJavaScriptを最初に使ってみようと思います。 – user1221330

+0

1つの質問:jspからajax呼び出し側にどのように応答を渡すことができますか? AJAXチュートリアルから、私はaspが使用することを発見しました: response.expires = -1 レスポンス。write(value) そしてPHPは以下を使用します: $ responses = $ value; しかし、jspのサンプルが見つかりませんでした。あなたはjspでそれをする方法を私に見せてもらえますか? – user1221330

0

計算コードは、必要な論理/計算を行うように設計された通常のサーブレットである必要があります。 JSPページは、HTMLおよび/または直接レンダリング可能なコンテンツを提供するのに最適です。

ページが配信されると、ページ上のすべてのJavaScriptがクライアント/ブラウザ上で実行されます。 Java構造に直接アクセスすることはできません。 AJAXを使用してサーバーと通信する必要があります。呼び出すサーブレットに計算結果が格納されたJSONオブジェクトを返します。

クライアント側では、dojo.xhr(GetまたはPostバージョン)を使用し、handleAsプロパティを 'json'に設定します。例:

dojo.xhrGet({ 
    // URL to servlet that will do computation for us on the server 
    url: url_to_calc_servlet, 

    // Tell Dojo to handle return value as a JSON string, so dojo will 
    // auto-convert it into an Object. 
    handleAs: 'json', 

    // Specify request parameters to servlet as an object of 
    // name/value pairs. 
    content: { 
sliderValue: XXX 
    }, 

    // Define callback function for dojo to call when servlet returns 
    load: function(response) { 
    // response will be the object your servlet returned 
    // ... access response data and update page accordingly... 
    } 
}); 

dojo.xhrの詳細は、Dojoのドキュメントを参照してください。

+0

実際、私はサーブレットを使ってこの問題を解決しました。私はあなたとは違ったアプローチをとっていました。とにかく@ewhありがとう。 – user1221330

関連する問題