Тип действия Struts2 json вызывает все функции из класса Action

Я использовал Struts2 json, как это

<package name="showcase" extends="json-default" >  

    <action name="DashBoardActivityJson" class="com.myDrDirect.doctor.action.patientOrderDetails" method="getRecentOrderDetails" >
       <result name="success" type="json" />
    </action>               
 </package>

Но здесь моя проблема немного сумасшедшая. Когда я обращаюсь к функции внутри класса, она вызывает каждую функцию на странице, хотя я упоминаю здесь имя метода. То есть, когда я устанавливаю type="json", действие вызывает как getRecentOrderDetails, так и getUserDetailses из класса com.myDrDirect.doctor.action.patientOrderDetails, но здесь я вызываю только getRecentOrderDetails. Кто-нибудь чувствует эту проблему раньше, пожалуйста, помогите.


person user359187    schedule 02.02.2012    source источник


Ответы (3)


Я считаю, что плагин JSON пытается вызвать каждый метод, начинающийся с имени "get", для сериализации вывода. Один из способов - переименовать метод в какой-то другой общий способ обработки этого. В противном случае вы можете включать и исключать параметры. Подробности см. в документации плагина.

json-плагин

person Umesh Awasthi    schedule 02.02.2012
comment
Да, ты прав. Но я сделал большую часть своего проекта и у меня есть много функций, начинающихся с get. Любая идея о том, как я могу управлять этим? - person user359187; 02.02.2012
comment
Привет, я запутался с exludeProperties, includeProperties, enableSMD и excludeNullProperties. Я добавил вопрос, пожалуйста, проверьте stackoverflow.com/questions/9115264/ - person user359187; 02.02.2012

Плагин struts2-json-plugin сериализует ваши действия, поэтому то, что вы описываете, является ожидаемым поведением. Чтобы обойти это, плагин предоставляет параметры включения и исключения, которые изменяют сериализацию таким образом, что он обрезает объект до желаемой формы.

В этом вопросе есть хороший пример этого: Struts2 + Json Сериализация элементов и вот еще одна проблема с плагином Json в Struts 2

Ознакомьтесь с документацией по подключаемому модулю на сайте struts2: http://struts.apache.org/2.2.3/docs/json-plugin.html здесь объясняется, как использовать xml или аннотации.

person Quaternion    schedule 02.02.2012
comment
Спасибо Quaternion, но это не решило мою проблему. Вся приведенная выше ссылка объясняет, как решить проблему с использованием аннотаций, но, к сожалению, я не использую тег аннотаций struts в своем проекте. Также я проверил ссылку struts.apache.org/2.2.3/docs/json-plugin.html, а также попробовал это, но это не решило мою проблему. Он по-прежнему вызывает все функции в моем проекте, когда я ссылаюсь на type=action в своем действии. Можете ли вы предложить мне другое решение для этого. Это будет очень полезно для меня - person user359187; 05.02.2012
comment
Почему бы не попробовать аннотации? Просто попробуйте с ними действие JSON, и если оно не дает ожидаемого результата, опубликуйте его здесь. С struts2 xml вам нужно посмотреть файл xml и действие, чтобы увидеть, что происходит с аннотациями, вам просто нужно действие. Есть только выигрыш, никаких потерь, особенно при использовании struts2-conventions-plugin. - person Quaternion; 06.02.2012
comment
Но я уже использую свою половину проекта без использования аннотаций struts. Могу ли я интегрировать это с этого этапа? - person user359187; 07.02.2012
comment
Абсолютно. Добавление аннотаций не должно повлиять на ваш проект. Вы также должны заглянуть в плагин соглашений ... опять же, все работает разумно, вы можете сэкономить много написания xml ... но это не мешает вам использовать xml для того, что вы хотите. Некоторые вещи лучше в xml, глобальные настройки и определения стека перехватчиков имеют наибольший смысл там, но конкретные действия легче всего понять в действии. Снова просто попробуйте начать с аннотаций json. Если вы дадите конвенциям подключиться, держу пари, вы пожалеете, что не сделали это раньше (я так и сделал). - person Quaternion; 07.02.2012

Я правильно понял, когда пишу действие в отдельном файле. Спасибо, ребята, за помощь в решении проблемы.

person user359187    schedule 10.02.2012