我怎样才能将值从javascript传递到struts2中的java类?

时间:2012-02-02 09:53:15

标签: java javascript struts2 struts

function redirect(id){
alert(id);

document.forms["AddToCart"].submit();
}

这是我的javascript。如何将'id'的值传递给AddToCart.java。我正在使用struts2框架。

5 个答案:

答案 0 :(得分:4)

您可以将值存储在表单内的隐藏字段中,因此在提交表单时,该值将发送给Action。

<form name="AddToCart" ... >
...
<input type="hidden" id="myid"/>
.....
</form>

然后

function redirect(id){
document.getElementById('myid').value = id;

document.forms["AddToCart"].submit();
}

答案 1 :(得分:4)

有很多方法可以做到这一点,其中一种简单的方法是将其作为隐藏的表单字段传递

类似

<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属性下的action类中获取值。我假设AddToCart是您的Struts2 Action类,否则您需要将值从被调用的操作传递给您的类。

答案 2 :(得分:0)

您无法直接从client(javascript)server side(java classes)进行通信。 因为javascript是由您的浏览器执行的,而java类是由您的服务器执行的。 因此,您需要使用Ajax request与java类进行通信。

答案 3 :(得分:0)

由于您正在提交表单,因此您可以在该表单中动态创建包含您要发送的ID的新输入,然后提交表单。

答案 4 :(得分:0)

我们必须做两件事来在struts2

中向action类发送一个值
  • 使用特定参数名称
  • 发送所需值
  • 创建jsp&amp;中提到的同名变量为该变量创建setter,getter方法。

在动作类

public class AddToCart{
private String itemId;

public String getItemId(){
return itemId;
}
public void setItemId(String id){
this.itemId=id;
}
}

这将有效。