将javascript函数的参数传递给java代码
我正在使用dojo滑块创建GUI。滑块旁边有一个文本框,用于显示滑块的当前值 我想要的是,每次滑动滑块时,滑块的当前值都会显示在文本框中。接下来,该值将用于进一步计算,结果将显示在另一个文本框中 我一直在做的是:在dojo滑块内部,我调用一个javascript函数,该函数传递滑块的当前值 在javascript函数中,我想将函数的参数传递到函数中的java代码中。java代码将使用该参数进行计算 我的问题是无法将参数传递给java代码。我的问题是我怎么做 下面是我写的代码:将javascript函数的参数传递给java代码,javascript,dojo,slider,Javascript,Dojo,Slider,我正在使用dojo滑块创建GUI。滑块旁边有一个文本框,用于显示滑块的当前值 我想要的是,每次滑动滑块时,滑块的当前值都会显示在文本框中。接下来,该值将用于进一步计算,结果将显示在另一个文本框中 我一直在做的是:在dojo滑块内部,我调用一个javascript函数,该函数传递滑块的当前值 在javascript函数中,我想将函数的参数传递到函数中的java代码中。java代码将使用该参数进行计算 我的问题是无法将参数传递给java代码。我的问题是我怎么做 下面是我写的代码: <head&
<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>
您可能需要使用AJAX将值传递给Java代码。我想Dojo对此有一些实用程序。您还需要插入Java代码来处理请求并执行实际逻辑。这不起作用,因为JSP中的客户端JavaScript无法调用服务器端Java方法。您有两种选择:1用JavaScript实现计算,或者2对执行计算的服务器端服务进行Ajax调用。您的计算代码应该是一个常规servlet,专门设计用于执行所需的逻辑/计算。JSP页面最适合提供HTML和/或直接可呈现的内容 记住,一旦提供了页面,页面上的任何javascript都会在客户端/浏览器上执行。您不再能够直接访问Java结构。必须使用AJAX与服务器通信。让您调用的servlet返回一个包含计算结果的JSON对象 在客户端,使用dojo.xhr Get或Post version并将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文档。谢谢@bebraw的回答。一个问题:如何将响应从jsp传递给ajax调用方?从AJAX教程中,我发现asp将使用:response.expires=-1 response.writevalue,php使用:$responses=$value;但我没有找到jsp的示例。你能告诉我怎么用jsp做吗?嗨。我并不真正使用JSP。不过,原则在任何地方都差不多。您可能想查看一些特定于JSP的教程,例如:。将其应用于Dojo。谢谢@cebarett,我想我将首先尝试使用JavaScript。一个问题:如何将jsp的响应传递给ajax调用方?从AJAX教程中,我发现asp将使用:response.expires=-1 response.writevalue,php使用:$responses=$value;但我没有找到jsp的示例。您能告诉我如何在jsp中实现它吗?实际上,我已经通过使用servlet解决了这个问题。但我用的方法和你的不同。无论如何谢谢@ewh。