0

我需要提交一些值作为我需要在Action课堂上使用的请求参数(通过 javascript)。我能够在这种方式之前发布一些数据并在Action课堂上检索。但现在它似乎不起作用。

当我刚刚提交时code=001

document.forms[0].action='test.action?code='+code; 

我可以在类的execute()方法中Action使用request.getParameter("code");

但是,当我尝试提交两个值时:

var code='001';

var values='Title:The Boy, Type:Mandatory';

document.forms[0].action='test.action?code='+code+'&values='+values;

在这种情况下,调用甚至没有进入执行方法(我在执行方法中有一个 sysout)。

有人可以告诉我这里有什么问题吗?我不明白.....

谢谢

4

2 回答 2

0

可能是我不太理解你的问题,但我猜你正在寻找这个

<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" 那么您只能发送 1 个变量。

于 2011-12-10T14:59:53.780 回答
0

我不确定你想用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
于 2011-12-10T07:33:05.747 回答