我想解释因为标题可能不那么清楚。 我们有一个带有提交按钮的jsp表单,可以调用一个动作。 在这个活动中,我们转到一个服务,它执行一些方法来做一些微积分。其中一个微积分(高于或低于阈值的值)必须更改/执行javascript函数。换句话说,在动作演算之后需要能够在同一个jsp页面中执行javascript函数。
我没有成功的事情:
我在JSP中创建了一个隐藏属性,为true或false状态创建了2个条件。默认情况下(在Java中的表单中)给出属性的错误状态并且工作正常。 但是当我在表单中更改属性的值时,JSP中没有任何更改,并且属性仍然具有false值。 我们无法转到另一个页面,我们会停留在同一个jsp页面。
JSP是不是实时评估了这个属性的值?
在action和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>
答案 0 :(得分:2)
您可以尝试通过Ajax调用Struts2操作。例如:
<强> FORM 强>
<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控制器中,你需要的所有计算和动作返回类型都必须是JSON(看看这里Strtus2 json plugin。Ajax魔法!