Установка вложенного поля через стек с помощью jQuery в Struts 2

У меня проблема с настройкой вложенного поля с помощью jQuery с использованием структуры Struts2.

Я не могу установить поле ModelDriven объекта myModel, если этот объект имеет поле на втором уровне.

Это:

Я не могу установить поле типа myModel.myObject.myField, но могу установить myModel.myField.

Может кто-нибудь помочь и рассказать, как установить вложенное поле в модели?

Чтобы было ясно:

Код ниже работает:

<script>
    function myFunction(myVal) {
        $.getJSON('login/open', {
            myField : myVal
        }, function(data) {
            if(data.ajaxResponseCode == 0){
                $("#myButton").remove();
                $("#myId").html("id set to=" + data.idSet + '');
            };
            return false;
        });
    };
</script>

Код ниже НЕ работает:

<script>
function myFunction(myVal) {
    $.getJSON('login/open', {
        myObject.myField : myVal
    }, function(data) {
        if(data.ajaxResponseCode == 0){
            $("#myButton").remove();
            $("#myId").html("id set to=" + data.idSet + '');
        };
        return false;
    });
};
</script>

Что интересно настройка поля с тегами JSP Struts работает:

<s:textfield name="myObject.myField" />

person Marcus    schedule 12.07.2014    source источник
comment
Это не то, как работают объекты JavaScript, создайте объект правильно. Не особенно интересно, что выражения ognl работают иначе, чем JavaScript, хотя они совершенно разные.   -  person Dave Newton    schedule 12.07.2014


Ответы (1)


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

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

Если у вас есть вся необходимая конфигурация и объекты Java, доступные для оценки выражений OGNL, вы можете проверить Основы OGNL, чтобы лучше понять работу OGNL.

При вызове функции jQuery Ajax и использовании параметров для передачи параметров действию Struts2 убедитесь, что вы получаете имена параметров в запросе до params interceptor заполните их компонентом действия или моделью.

Попробуйте этот код и измените его, если он работает для вас

$.getJSON('login/open', {
    'myObject.myField' : myVal
}, function(data) {
person Roman C    schedule 12.07.2014