Как отправить данные JSON со страницы JSP в класс действий в Struts2 с помощью AJAX

0

Я хочу передать данные json с jsp-страницы в класс действия с помощью ajax в jquery. Ниже приведен код jquery.

$.ajax({
type : 'POST',
url : contextPath+"/postData.action",   
async: false ,
data :json,
dataType:"json", 
contentType: 'application/json; charset=utf-8',
contentType: "application/json",
success : function(result) {
    }
});

Follwing - это код класса действия:

private String data;

public String getData() {
    return data;
}

public void setData(String data) {
    this.data = data;
}

@Override
public String execute() 
{
    System.out.println(data);
    return ActionSupport.SUCCESS;
}

Файл конфигурации Struts.xml

<action name="postData" class="demo.StoreJSONData" >     
    <result name="success">/jsp/output.jsp</result>

 </action>

Код образца кода json:

{
"rectangle": {
    "0": {
        "id": "rectangle_1",
        "displayData": "<div class=\"\" style=\"background: none repeat scroll 0% 0% rgb(255, 255, 255); width: 389px; height: 129px; position: absolute; left: 92px; top: 360px; border: 1px solid black; z-index: 4;\" id=\"rectangle_1\"></div>"
    }
},
"eclipse": {
    "0": {
        "id": "eclipse_1",
        "displayData": "<div class=\"\" style=\"position: absolute; z-index: 5; background-color: rgb(243, 239, 15); border: 1px solid black; width: 245px; height: 83px; border-radius: 50% 50% 50% 50%; left: 563px; top: 445px;\" id=\"eclipse_1\"></div>"
    }
}
}
Показать ещё 1 комментарий
Теги:
struts2

3 ответа

1

Не знаете, что именно вы хотите, и какие данные вы хотите отправить в действие Struts2. вот способ отправки данных JSON с использованием JQuery в действие Struts2

JQuery

var arr = { value1: 'value1', value2: 'value2'}; // any size data

$.ajax({
    url: 'action URL',
    type: 'POST',
    data: JSON.stringify(arr),
    contentType: 'application/json; charset=utf-8',
    dataType: 'json'
    success: function(response) {
        alert(response);
    }
});
  • Метод JSON.stringify преобразует объект Java-скрипта в строку JSON, большая часть текущего браузера предоставит этот метод из коробки, но для старого вам может понадобиться другой способ, например json2.js и т.д.

Struts2 уже предоставляет плагин для обработки данных JSON для вас, посмотрите на json-plugin, чтобы получить более подробную информацию об этом.

Пожалуйста, помните следующие моменты

  • Вы должны определить свой result type="json" action result type="json" и проверить, что у вас есть json-плагин на вашем пути к классам, убедитесь, что у вас есть.

Пожалуйста, обратите внимание на следующий вопрос, который даст вам более подробную информацию

  • 0
    Я посмотрел на данную ссылку, я добавил соответствующий код. Можете ли вы предложить что-нибудь.
  • 0
    хороший ответ +1
0

Эй. Проблема в том, что вы непосредственно отправляете массив объектов. Так Struts2 не знает, какой метод вызывать. Измените данные json, как показано ниже. Тогда это сработает.

{"data":[{"id":"1","code":"111","name":"ddd"},
"id":"2","code":"222","name":"sss"},
{"id":"3","code":"333","name":"eee"}]}

Затем внутри сеттера, считанного с объектом

public void setData(List < Report > data) {
System.out.println("Setter Call Flow");
this.data = data;

}

Где Report - это класс java, содержащий id, code, name как его члены с сеттерами и getters.

0

Я предлагаю вам использовать плагин с более высоким уровнем (struts-jquery-plugin). Он поддерживает поддержку Ajax, и это то, что вы ищете.

  • 0
    Я не согласен с вами, плагин struts2-Jquery предоставляет других функционалистов, и хотя плагин действительно хорош, но если вы не хотите использовать там теги, нет необходимости добавлять какие-либо дополнительные зависимости.
  • 0
    Да. Плагин предоставляет компоненты пользовательского интерфейса (дерево, вкладка, сетка, автозаполнение, индикатор выполнения ...), которые могут не подходить для всех проектов. Также есть компоненты Ajax для ссылок, div и форм, которые будут очень полезны. Если ваш проект полностью основан на AJAX, я предлагаю вам использовать этот (или аналогичный) компонент.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню