Как я могу передать значение из JavaScript в класс Java в Struts2? - PullRequest
1 голос
/ 02 февраля 2012
function redirect(id){
alert(id);

document.forms["AddToCart"].submit();
}

Это мой JavaScript.Как я могу передать значение «id» в AddToCart.java.Я использую Struts2 Framework.

Ответы [ 5 ]

4 голосов
/ 02 февраля 2012

Есть много способов сделать это, и один из самых простых способов - передать его как скрытое поле формы

что-то вроде

<s:hidden value="" name="my_ID" id="my_ID"/>

, и в вашем javascript вам нужно установитьэто скрытое поле ввода, такое как

function redirect(id){
alert(id);
document.getElementById("my_ID").value=id;
document.forms["AddToCart"].submit();
}

. Последний шаг - создать аналогичное свойство в вашем классе действий с его геттером и сеттерами, а инфраструктура вставит значение формы в уважаемое свойство

public class MyAction extends ActionSupport{

  private String my_ID  // data type can be as per your requirements
  getter and setters

  public String execute() throws Exception{
     return SUCCESS;
  }

}
* 1011.* это все, что вам нужно сделать, и вы сможете получить значение внутри вашего класса действий в свойстве my_ID.Я предполагаю, что AddToCart - это ваш класс действий Struts2, иначе вам нужно передать значение вашему классу из вызываемого действия.
4 голосов
/ 02 февраля 2012

Вы можете сохранить значение в скрытом поле внутри формы, поэтому при отправке формы значение будет отправлено в Action.

<form name="AddToCart" ... >
...
<input type="hidden" id="myid"/>
.....
</form>

затем

function redirect(id){
document.getElementById('myid').value = id;

document.forms["AddToCart"].submit();
}
0 голосов
/ 02 февраля 2012

Мы должны сделать две вещи, чтобы отправить значение классу действий в struts2

  • отправить требуемое значение с указанным именем параметра
  • создать переменную с тем же именем, которое указано в jsp, и создать сеттер, методы получения для этой переменной.

в классе действий

public class AddToCart{
private String itemId;

public String getItemId(){
return itemId;
}
public void setItemId(String id){
this.itemId=id;
}
}

это будет работать.

0 голосов
/ 02 февраля 2012

Поскольку вы отправляете форму, вы можете динамически создавать в этой форме новый ввод, содержащий идентификатор, который вы хотите отправить, и затем отправлять форму.

0 голосов
/ 02 февраля 2012

Вы не можете общаться от client(javascript) до server side(java classes) напрямую. Потому что javascript выполняется вашим браузером, а java-классы - вашим сервером. Поэтому вам нужно использовать Ajax request для связи с классами Java.

...