Отправка данных из JS-кода на стороне клиента в класс Struts 2 ActionSupport - PullRequest
0 голосов
/ 14 декабря 2011

Я видел пост об отправке и построении jgGrids из действий, зарегистрированных в веб-приложении struts.xml, использующем эти библиотеки.Но я еще не видел, как поймать обработанные данные из сетки.Мой код:

jQuery("#bedata").click(function(){
    jQuery('#rowed3').jqGrid('restoreRow',lastsel);
    var gridData = jQuery("#rowed3").getRowData();
    var postData = JSON.stringify(gridData);
    alert("JSON serialized jqGrid data:\n" + postData);
    $.ajax({
        type: "POST",
        url: "CargaTabla.action",
        data : {
            jgGridData: postData,
            customData: "someinfo"
        },
        dataType:"json",
        contentType: "application/json; charset=utf-8",
        success: function(response, textStatus, xhr) {
            alert("success");
         },
        error: function(xhr, textStatus, errorThrown) {
            alert("error");
        }
    });
});

id = betadata кнопка отправляет данные в "CargaTabla.action", действие, зарегистрированное в файле конфигурации Struts 2.Данные правильно сериализованы в виде строки JSON.ClassActionImpl это класс, который ловит это действие, есть ли способ получить информацию, отправляемую Javascript?Имеет ли Struts 2 какой-либо способ получить эти данные без использования JSP-запроса или чего-то подобного, просто Java-код в том же ClassActionImpl.execute()?Какой-то скрытый параметр?

Спасибо.

struts.xml

<action name="CargaTabla" method="guardarUsuario" class="org.json.JSONRespuestaTabla"> <result name="success" type="json"> 
<param name="includeProperties">jgGridData</param> 
</result>
</action>

Ответы [ 2 ]

1 голос
/ 15 декабря 2011

Хорошо, Умеш.Я новичок в этом сообществе, но пока не могу забить вас.:( Извините. Я очень ценю ваши усилия. Ну, я исправил проблему. Похоже, что Struts не любит метод POST для автозаполнения атрибутов:

    $.ajax({
    type: "GET",

Вместо:

    $.ajax({
    type: "POST",

И в любом случае он автоматически обращается к методам установки его имени. Если у меня есть имя атрибута «customData», это означает, что он автоматически получит доступ к своему методу метода установки и будет заполняться данными, отправленными клиентом. Если нет атрибута, вызываемого как определенный параметр, Struts 2. просто игнорирует данные. Больше ничего не нужно настраивать в файле struts.xml. Просто действие:

        <action name="CargaTabla" method="guardarUsuario" class="org.json.JSONRespuestaTabla">
        <result name="success" type="json"/>
    </action>

Это очень интересно и странно сразу, не нужно объявлять какие-либо параметры. -param- в Struts.xml тег используется только для отправки данных в веб-клиент. Вы не можете фильтровать, если вы хотите или нет заполнить какой-либо атрибут ActionClass. Я хотел бы узнать больше о данных из управления клиентом в Strut2. Может бытьв этом есть какой-то перехватчик.

Еще раз спасибо. Raph

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

Well Struts2 имеет встроенный механизм для приема данных, отправляемых по запросу в класс действий. В вашем случае я считаю, что вы отправляете следующие данные \

jgGridData: postData,
customData: "someinfo"

Не уверен, в каком формате этот код отправляет данные в действие, особенно jgGridData. Но для второго параметра все, что вам нужно сделать, это определить свойство в вашем классе действий с именем customData и его методами получения и установки, Перехватчик параметров struts2 в процессе выполнения запроса будет искать свойство, подобное имени параметра запроса, и попытается установить значение в соответствующем свойстве в вашем классе действий.

public class ClassActionImpl extends ActionSupport{

    private String customData;
    private String jgGridData; // I am assuming data as string you can change it as per your data type

//getter and setter for both above properties

   public String execute() throws Exception{
    //can use both the above properties here as they will be filled by fraework
   }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...