在Struts2中将一个参数从JSP传递给操作类

Passing a parameter from JSP to action class in Struts 2

本文关键字:JSP 操作 参数 一个 Struts2      更新时间:2023-09-26

我正试图在单击按钮(非提交按钮)时将文本字段的值作为URL参数从JSP传递到操作类,并在该链接中找到了一个解决方案:Struts2中的Onchange事件。

我已经遵循了该链接中提到的所有步骤,即:

  • onClick事件创建javascript函数
  • 在函数内,即setDealers,将值(即"reportGroup")传递给动作类,如下所示
function setDealers(){
  var rep_value=document.getElementById("reportGroup").value;
  alert("Value is"+rep_value);
  window.location=="getDealersByGrouppopUpAction?reportGroup="+rep_value;
  alert("Just a check")
}
  • 在操作类中创建了一个名为"reportGroup"的变量,即具有getter和setter的PopUpAction.java

为了支持所有这些,我在struts.xml中有以下配置:

<action name="*popUpAction" class="popUpAction" method="{1}" > 
    <!--this will call a desired method present inside action class --> 
    ...
    ...
</action>

单击按钮后,PopUpAction类的getDealersByGroup方法将被调用,并在SQL查询中使用传递的值,即"reportGroup"。但根据上面的javascript函数setDealers,只有警报命令被执行,并且所需的值没有被传递到操作类。

struts.xml有什么不对劲吗。

首先,您在代码=== 中出现了拼写错误

window.location="getDealersByGrouppopUpAction?reportGroup="+rep_value;

其次,这听起来像是重定向到动作,对于调用动作,请使用s:action$.ajax(),参见示例。

Trird,对于url,最好使用s:url标记来构建url。

var url = "<s:url action='getDealersByGrouppopUpAction'/>"+"?reportGroup="+rep_value;
window.location=url;