2010-08-27 48 views
0

我正在尝试从我的struts2操作中执行结果类型的“json”。这是我在代码中的配置。Struts2 json ajax和自定义返回类型

的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 

回答

0

您是否在web.xml文件中正确配置了struts2筛选器?至少,你应该配置这样的例子你的web.xml -

http://s.apache.org/ata

而且,你看到在你的tomcat日志中的任何错误,当web应用程序启动?通常情况下,如果struts2过滤器无法找到与请求相匹配的操作定义,它将创建如下错误 -

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

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