2012-02-02 25 views

回答

4

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

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

然后

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

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

您不能直接从client(javascript)server side(java classes)进行通信。 因为JavaScript是由您的浏览器执行的,并且java类是由您的服务器执行的。 所以你需要使用Ajax request与java类进行通信。

+0

谢谢你。我试图通过使用隐藏字段来实现这一点,它为我工作。 – Hari 2012-02-02 11:36:54

+0

只需要Ajax,只要他想在不重新加载页面的情况下执行它,您总是可以通过向url字符串添加参数或通过提交表单 – anu 2012-02-02 14:29:42

+0

感谢@anu来纠正我的错误,从而将参数传递给java类。 – 2012-02-02 14:34:32

0

由于您正在提交表单,因此您可以在该表单中动态创建一个包含您希望发送的标识的新输入,然后提交表单。

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

+0

感谢U.我已经尝试隐藏字段,我从我的Java类中获取值。 – Hari 2012-02-02 11:35:33

+0

@哈里如果这解决了你的问题,你可以标记答案被接受 – 2012-02-02 11:40:59

0

我们必须做两两件事来的值发送到动作类在Struts2

  • 发送所需的值与特定的参数名称
  • 创建与JSP &创建二传手提到的同名变量,该变量的getter方法。

在动作类

public class AddToCart{ 
private String itemId; 

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

这会工作。

相关问题