【发布时间】:2012-02-02 09:53:14
【问题描述】:
function redirect(id){
alert(id);
document.forms["AddToCart"].submit();
}
这是我的 JavaScript。如何将“id”的值传递给 AddToCart.java。我正在使用 struts2 框架。
【问题讨论】:
标签: java javascript struts2 struts
function redirect(id){
alert(id);
document.forms["AddToCart"].submit();
}
这是我的 JavaScript。如何将“id”的值传递给 AddToCart.java。我正在使用 struts2 框架。
【问题讨论】:
标签: java javascript struts2 struts
您可以将值存储在表单内的隐藏字段中,以便在提交表单时将值发送到 Action。
<form name="AddToCart" ... >
...
<input type="hidden" id="myid"/>
.....
</form>
然后
function redirect(id){
document.getElementById('myid').value = id;
document.forms["AddToCart"].submit();
}
【讨论】:
有很多方法可以做到这一点,其中一种简单的方法是将其作为隐藏的表单字段传递
类似
<s:hidden value="" name="my_ID" id="my_ID"/>
在你的javascript中你需要设置这个隐藏的输入字段
function redirect(id){
alert(id);
document.getElementById("my_ID").value=id;
document.forms["AddToCart"].submit();
}
最后一步是在你的动作类中创建一个类似的属性,它的 getter 和 setter 和框架将在受尊重的属性中注入表单值
public class MyAction extends ActionSupport{
private String my_ID // data type can be as per your requirements
getter and setters
public String execute() throws Exception{
return SUCCESS;
}
}
这就是您需要做的所有事情,您将能够在my_ID 属性下的操作类中获取值。我假设 AddToCart 是您的 Struts2 Action 类,否则您需要将值从您调用的操作传递给您的类。
【讨论】:
您不能直接从client(javascript) 与server side(java classes) 通信。
因为 javascript 由您的浏览器执行,而 java 类由您的服务器执行。
所以需要使用Ajax request与java类进行通信。
【讨论】:
由于您正在提交表单,因此您可以在该表单中动态创建一个包含您要发送的 id 的新输入,然后提交该表单。
【讨论】:
在 struts2 中我们必须做两件事来向动作类发送一个值
创建与 jsp 中提到的同名的变量并为该变量创建 setter、getter 方法。
在行动课中
public class AddToCart{
private String itemId;
public String getItemId(){
return itemId;
}
public void setItemId(String id){
this.itemId=id;
}
}
这会起作用。
【讨论】: