代码之家  ›  专栏  ›  技术社区  ›  Chandra

Struts2 json ajax和自定义返回类型

  •  0
  • Chandra  · 技术社区  · 14 年前

    我正在尝试从struts2操作中执行“json”结果类型。这是我代码中的配置。

    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 回复  |  直到 14 年前
        1
  •  0
  •   Wes W    14 年前

    是否在web.xml文件中正确配置了struts2筛选器?至少,您应该像下面的示例一样配置web.xml-

    http://s.apache.org/ata

    另外,当web应用程序启动时,您是否在tomcat日志中看到任何错误?通常,如果struts2过滤器找不到与请求匹配的操作定义,它将创建如下错误-

    HTTP状态404-没有为命名空间/和操作名vendorList.Action映射操作。

    您粘贴的404看起来更像是来自Tomcat,这表明struts2可能没有正确合并。