我不确定你想用javascript做什么。但是我们可以做些什么来让struts2为你工作
在您的操作类中创建 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 内置拦截器堆栈将尝试在您的动作类中查找名称为代码、值的属性,并且由于您已经为这些属性指定了 setter 方法,struts2 将尝试在这些属性中设置值。
在尝试设置属性时,它将查看您为属性指定的数据类型,内置系统将寻找它拥有的开箱即用的类型转换器,并将尝试根据您的要求转换数据类型。如果它具有该类型转换器,它将为您工作,否则将引发无法将给定值转换为指定值的异常。
供参考:
Struts2 提供了一种干净的方式来将您的代码与底层代码分开,Servlet API
因此无需使用request.getParameter()
或ActionContext.getContext()
作为框架将为您完成所有这些工作并以干净的方式为您提供动作类中的所有内容
这是为我工作的代码
JSP
<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>
这是动作类
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