在 Struts 动作之后执行 javascript 函数做一些计算
Execute javascript function after Struts action do some calcul
我想解释一下,因为标题可能不太清楚。
我们有一个带有提交按钮的 jsp 表单,该按钮调用一个操作。
在这个活动中,我们进入一个服务,它执行一些方法来做一些微积分。其中一个微积分(高于或低于阈值的值)必须 change/execute 一个 javascript 函数。换句话说,在需要能够在同一个 jsp 页面中执行 javascript 函数的操作演算之后。
我做了什么没有成功:
我在 JSP 中创建了一个隐藏的 属性 和 2 个用于真或假状态的条件。默认情况下(在 Java 中的表单中)给 属性 假状态并且工作正常。
但是,当我以形式更改 属性 的值时,JSP 没有任何变化,并且 属性 仍然具有错误值。
我们不能转到另一个页面,我们停留在同一个 jsp 页面。
JSP 没有实时评估这个 属性 的值?
在操作和 jsp 之间进行通信的任何其他选项?
JSP 属性
<nested:hidden property="quitProgressBar"></nested:hidden>
<nested:equal value="true" property="quitProgressBar">
<script>
alert('Prueba JVE');
</script>
</nested:equal>
<nested:equal value="false" property="quitProgressBar">
<script>
alert('Recien cargado');
</script>
</nested:equal>
您可以尝试通过 Ajax 调用 Struts2 操作。例如:
表格
<form id="myForm">
<input id="param1" name="param1" type="text" />
<input id="param2" name="param2" type="text" />
<button type="submit">Submit</submit>
</form>
JQUERY
$(document).ready(function() {
$('#myForm').submit(function() {
var param1 = $(this).find('#param1');
var param2 = $(this).find('#param2');
$.ajax({
url: '/route/to/action',
type: 'POST',
data: {
'param1': param1, /* setParam1(String param1) required!*/
'param2': param2, /* setParam2(String param2) required!*/
},
dataType: 'json',
complete: function (jqXHR, textStatus) {
// DO SOMETHING
},
success: function (response) {
// DO SOMETHING
},
error: function (jqXhr, textStatus, errorThrown) {
console.log(jqXhr);
console.log(textStatus);
console.log(errorThrown);
// DO SOMETHING
}
});
});
});
在 Struts2 控制器中执行您需要的所有计算,并且操作 return 类型必须是 JSON(看看这里 Strtus2 json plugin。Ajax 魔法!
我想解释一下,因为标题可能不太清楚。 我们有一个带有提交按钮的 jsp 表单,该按钮调用一个操作。 在这个活动中,我们进入一个服务,它执行一些方法来做一些微积分。其中一个微积分(高于或低于阈值的值)必须 change/execute 一个 javascript 函数。换句话说,在需要能够在同一个 jsp 页面中执行 javascript 函数的操作演算之后。
我做了什么没有成功:
我在 JSP 中创建了一个隐藏的 属性 和 2 个用于真或假状态的条件。默认情况下(在 Java 中的表单中)给 属性 假状态并且工作正常。 但是,当我以形式更改 属性 的值时,JSP 没有任何变化,并且 属性 仍然具有错误值。 我们不能转到另一个页面,我们停留在同一个 jsp 页面。
JSP 没有实时评估这个 属性 的值?
在操作和 jsp 之间进行通信的任何其他选项?
JSP 属性
<nested:hidden property="quitProgressBar"></nested:hidden>
<nested:equal value="true" property="quitProgressBar">
<script>
alert('Prueba JVE');
</script>
</nested:equal>
<nested:equal value="false" property="quitProgressBar">
<script>
alert('Recien cargado');
</script>
</nested:equal>
您可以尝试通过 Ajax 调用 Struts2 操作。例如:
表格
<form id="myForm">
<input id="param1" name="param1" type="text" />
<input id="param2" name="param2" type="text" />
<button type="submit">Submit</submit>
</form>
JQUERY
$(document).ready(function() {
$('#myForm').submit(function() {
var param1 = $(this).find('#param1');
var param2 = $(this).find('#param2');
$.ajax({
url: '/route/to/action',
type: 'POST',
data: {
'param1': param1, /* setParam1(String param1) required!*/
'param2': param2, /* setParam2(String param2) required!*/
},
dataType: 'json',
complete: function (jqXHR, textStatus) {
// DO SOMETHING
},
success: function (response) {
// DO SOMETHING
},
error: function (jqXhr, textStatus, errorThrown) {
console.log(jqXhr);
console.log(textStatus);
console.log(errorThrown);
// DO SOMETHING
}
});
});
});
在 Struts2 控制器中执行您需要的所有计算,并且操作 return 类型必须是 JSON(看看这里 Strtus2 json plugin。Ajax 魔法!