Struts2 JSON AJAX, а также пользовательский тип возврата - PullRequest
0 голосов
/ 27 августа 2010

Я пытаюсь сделать тип результата "json" из моего действия struts2. Вот конфигурация, которая у меня есть в моем коде.

Struts.xml:

<package name="example" namespace="/" extends="json-default">
    <action name="vendorList" class="com.stg.providerportal.actions.AjaxVendorListAction">
      <result  name="success" type="json"></result>
    </action>
</package>

Действие Struts:

private Object jsonModel;


 public String execute() throws Exception {

  String nextStep = SUCCESS;

  Map session = getSession();
  SessionParams params = (SessionParams) session.get(Constants.KEY_SESSION_PARAMS);

  try {
   Map json = new HashMap<String,String>();
   json.put("apple", "Hi");
   //vendorList = populateVendors(params,taxID,billingZipCode);
   setJsonModel(json);
   //session.put(Constants.KEY_SESSION_VENDOR_LIST, vendorList);

  } catch (Exception e) {
   CILogUtil.logInfo(e, params);
   nextStep = AppConstants.SYSTEM_UNAVAILABLE;
  }

  return SUCCESS;
 }

Я вызываю это действие, используя ajax (jquery), и вот как я звоню.

$.getJSON('vendorList.action' ,  
 {
  "taxID": taxID,
  "billingZipCode": billingZipCode      
 },
 function(json) {
 alert('hi');
 });

$.ajaxSetup({"error":function(XMLHttpRequest,textStatus, errorThrown) {   
    alert(textStatus);
    alert(errorThrown);
    alert(XMLHttpRequest.responseText);
}});

Когда я выполняю это, я получаю ответ от действия, как показано ниже. Не знаю почему.

Error 404: SRVE0190E: File not found: /vendorList.action 

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

http://localhost:9081/providerportal1/vendorList.action?taxID=111billingZipCode=1111

1 Ответ

0 голосов
/ 03 сентября 2010

Правильно ли настроены фильтры Struts2 в файле web.xml? Как минимум, ваш web.xml должен быть настроен, как в этом примере -

http://s.apache.org/ata

Кроме того, вы видели какие-либо ошибки в журналах tomcat при запуске веб-приложения? Как правило, если фильтр struts2 не может найти определение действия, соответствующее запросу, это приведет к ошибке, подобной следующей -

HTTP-статус 404. Не существует сопоставленного действия для пространства имен / и имени действия vendorList.action.

Вставленные вами 404 больше похожи на Tomcat, что указывает на то, что struts2, вероятно, неправильно встроен.

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