При отправке нескольких значений метод execute () не запускается - PullRequest
0 голосов
/ 10 декабря 2011

Мне нужно передать некоторые значения в виде параметров запроса (через javascript), которые мне нужно использовать в моем классе Action.Я смог опубликовать некоторые данные до этого и получить их в классе 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;

В этом случае вызов даже не входит в метод execute (у меня есть sysoutв методе execute).

Может кто-нибудь сказать, пожалуйста, что здесь не так?Я не понимаю .....

Спасибо

Ответы [ 2 ]

0 голосов
/ 10 декабря 2011

Может быть, я плохо понимаю ваш вопрос, но, думаю, вы ищете это

<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 переменную.

0 голосов
/ 10 декабря 2011

Я не уверен, что вы пытаетесь сделать с помощью 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 в стеке перехватчиков попытается найти свойство с кодом имени, значениями в вашем классе действий, и, поскольку вы уже указали методы установки для этих свойств, Struts2 попытается установить значения в этих свойствах.

, пытаясь установить свойства, он будет искать тип данных, который вы указали для своих свойств, встроенная система будет искать имеющиеся у него преобразователи типа box и будет пытаться преобразовать тип данных в соответствии с вашими требованиями. , если у него есть этот преобразователь типов, он будет работать за вас, иначе будет сгенерировано исключение, что он не может преобразовать данное значение в указанное значение.

FYI:

Struts2 предоставляет чистый способ отделить ваш код от базового Servlet API, поэтому нет необходимости использовать request.getParameter() или ActionContext.getContext(), так как Framework сделает всю эту работу за вас и предоставит вам все в вашем классе действий в чистом виде. способ

вот код, работающий на меня

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
...