当提交多个值时,execute()方法不会运行
When submitting multiple values, execute() method doesn't run
我需要提交一些值作为请求参数(通过javascript),我需要在我的Action
类中使用。我能够在这种方式之前发布一些数据,并在Action
类中检索。但现在似乎行不通了。
当我刚刚提交code=001
时,
document.forms[0].action='test.action?code='+code;
我能够使用request.getParameter("code");
Action
类的execute()
方法中检索此值但是,当我尝试提交两个值时:
var code='001';
var values='Title:The Boy, Type:Mandatory';
document.forms[0].action='test.action?code='+code+'&values='+values;
在这种情况下,调用甚至没有进入execute方法(我在execute方法中有一个sysout)。
谁能告诉我这里出了什么问题?我不明白.....谢谢
我不确定你想用javascript做什么。但是我们可以这样做让struts2为你工作
在action类中创建2个属性
private String code
private String values
// create there getter and setter outside of execute method
现在当你提交你的值时例如在你的例子中
localhost:8080/Com/test.action?code=1001&values=FUEL:PETROL, POWER:KW, Wheel
Configuration:4X2, CABIN:SINGLE CAB, TRANSMISSION:FULLY AUTOMATIC, Steering: LHD
struts2内置的拦截器堆栈将尝试在您的action类中查找具有名称代码,值的属性,并且由于您已经为这些属性指定了setter方法,struts2将尝试设置这些属性中的值。
在尝试设置属性时,它将查找您为属性指定的数据类型,内置系统将查找它所具有的开箱即用类型转换器,并将尝试根据您的要求转换数据类型。如果它具有该类型转换器,它将为您完成工作,否则将抛出异常,无法将给定值转换为指定值。
供参考:
Struts2提供了一种干净的方式来分离你的代码从底层的Servlet API
,所以没有必要使用request.getParameter()
或ActionContext.getContext()
作为框架将为你做所有这些工作,并提供你的一切在你的动作类在干净的方式
这是为我工作的代码
<<p> JSP/strong><script type="text/javascript">
function test(){
var code='001';
var values='values=FUEL:PETROL, POWER:KW, Wheel Configuration:4X2, CABIN:SINGLE CAB, TRANSMISSION:FULLY AUTOMATIC, Steering: LHD';
var value='demo.action?code='+code+'&values='+values;;
alert(value);
document.demo.action=value;
document.demo.submit();
}
</script>
</head>
<body>
<form action="" id="demo" name="demo" method="post">
<input type="button" onclick="test()">
</form>
这里是Action类
private String code;
private String values;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getValues() {
return values;
}
public void setValues(String values) {
this.values = values;
}
public String execute(){
System.out.println("**************************"+code);
System.out.println(values);
}
下面是控制台输出
**************************001
FUEL:PETROL, POWER:KW, Wheel Configuration:4X2, CABIN:SINGLE CAB,
TRANSMISSION:FULLY AUTOMATIC, Steering: LHD
也许我没有很好地理解你的问题,但我猜你正在寻找这个
<s:url id="urlid" action="anyaction" escapeAmp="false">
<s:param name="param1">value1</s:param>
<s:param name="param2">value2</s:param>
</s:url>
如果你没有设置escapeAmp="false",那么你只能发送一个变量
- Meteor方法在客户端返回null,在客户端运行的相同方法返回正确的值
- PhantomJS - 检查javascript函数是否正在运行的任何方法
- 实现比较方法的最佳实践是什么;s的比较类型是在运行时选择的
- Meteor应用程序无法运行-对象#<编译器>没有方法'主机'
- 使用c#在Web服务器上运行JavaScript方法
- strongloop script.js run find in before delete方法:如何同步运行异步方法
- 未能运行构造函数:TypeError:对象#<对象>没有方法'addPlugin'
- 有没有一种方法可以在服务器端页面加载之前在加载时运行javascript
- Chrome扩展:是否有一种方法可以运行JavaScript来获取页面上的内部html,并将其保存到扩展中的变量中
- javascript在html元素方法运行setTimeout后返回此消息
- 为什么可以't我从hamsters.js内部运行我的方法
- 如何从 MVC4 链接调用 Javascript 方法(错误 JavaScript 运行时错误:对象不支持此操作)
- 在客户端 Javascript 方法之后运行服务器方法
- 为什么 then() 链式方法不按顺序运行
- setInterval 只在对象方法上运行一次
- 运行时错误:对象不支持属性或方法
- JQuery .ajax() 函数调用不起作用,但成功方法运行
- 随着时间的推移,JavaScript 的 setInterval() 方法运行是否会消耗明显的处理能力
- javascript方法运行时显示loading.gif
- 将方法c#运行到javascript中