Struts2 json ajax还有自定义返回类型

时间:2010-08-27 16:28:35

标签: jquery ajax json struts2

我正在尝试从我的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 Action:

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 :(得分:0)

您是否在web.xml文件中正确配置了struts2过滤器?至少,您应该像这个示例一样配置web.xml -

http://s.apache.org/ata

此外,您是否在Web应用程序启动时看到了tomcat日志中的任何错误?通常,如果struts2过滤器找不到与请求匹配的操作定义,则会产生如下错误 -

HTTP状态404 - 没有映射名称空间/操作名称vendorList.action。

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