将javascript函数的参数传递给java代码
Passing argument of javascript function to java code
我正在使用 dojo 滑块创建一个 GUI。在滑块旁边有一个文本框,用于显示滑块的当前值。
我想要的是每次滑动滑块时,滑块的当前值都会出现在文本框中。接下来,此值将用于进一步计算,结果将显示在另一个文本框中。
我一直在做的是:在 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>
您可能需要使用 AJAX 将值传递给 Java 代码。我想 Dojo 有一些实用程序。您还需要检测 Java 代码以处理请求并执行实际逻辑。
它不起作用,因为 JSP 中的客户端 JavaScript 无法调用服务器端 Java 方法。您有两种选择:(1) 改为在 JavaScript 中实现计算,或 (2) 对执行计算的服务器端服务进行 Ajax 调用。
你的计算代码应该是一个常规的servlet,专门设计用于执行你需要的逻辑/计算。 JSP 页面最适合提供 HTML 和/或直接可呈现的内容。
请记住,一旦页面被提供,页面上的任何javascript都会在客户端/浏览器上执行。 您不再可以直接访问 Java 结构。 必须使用 AJAX 与服务器通信。 让你调用的 servlet 返回一个包含计算结果的 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 文档以获取有关 dojo.xhr 的更多信息。
- 如何轻松地将服务器端变量从Java代码转移到客户端代码
- 我需要java代码来打开html代码onclick事件
- 在Java代码中的javascript函数中使用变量
- 如何使用jsp以相同的形式调用java代码和javascript代码
- 如何从javascript运行java代码
- 如何使用按钮从 JSP 页面执行 Java 代码
- 为什么Java代码需要编译,而JavaScript代码不需要
- 从javascript调用android原生java代码
- GWT:在Java代码中捕获本地JSNI异常
- 从本机 java 代码调用 JS 事件
- 如何从本机 Java 代码调用 JS
- 适用于 Android 应用程序的 Java 代码中的实例化异常
- 如何从 java 代码 android native 调用 JavaScript 函数
- HTMLUnit是否包括一个功能性的[HTML5]画布2D实现,能够将图像数据渲染回Java代码
- 来自javascript的Java代码
- CryptoJS和Java代码的不同输出加密
- 使用 Java 代码在 HTML 文件中运行 JavaScript 代码
- 使用 java 代码获取完整的网页
- 将javascript函数的参数传递给java代码
- 使用 cordova-plugin-crosswalk-webview 从 JS 调用本机 Java 代码