簡體   English   中英

Ajax錯誤struts2?

[英]Ajax error struts2?

我的動作課有:

try{

        tspNameIdMap = slsReqMgmtCommonRemote.getTspNameIdMap(Integer.parseInt(circleId));

        throw new ReqMgmtException("Message test");
    }
    catch(ReqMgmtException rEx){

        addActionError("Action-Error: Request Management Exception thrown");
        return ERROR;
        }

我正在進行AJAX調用,並使用Struts2-Json-plugin以JSON形式獲取tspNameIdMap

JS:AJAX的一部分:

success: function(data){
                alert('Updated DB');
            },
            error: function(data){
                alert(data);
            }

我的struts.xml

<action name="findTspNameIdMap"
            class="cdot.oss.cmsat.gma.struts.ConfigureTspThresholdAction" method="findTspNameIdMap">
            <result name="success" type="json">
                <param name="root">
                    tspNameIdMap                    <!-- tspNameIdMap will be returned in JSON form -->
                </param>
            </result>
        </action>

我想在我的Ajax錯誤函數中添加addActionError消息。 然后,我還將要在我的JSP中顯示它。 我怎么能得到這個?

附:我是否必須在屬性文件中包括此ActionError消息? 我是第一次使用它。 救命

編輯 :當我按照@Prabhakar回答時,我收到了錯誤消息,但在AJAX調用success后返回了它。

另一個問題是,當我將其放入JSP時,不會顯示actionerror

JSP:

<s:if test="hasActionErrors()">
       <s:actionerror />
</s:if>

請檢查以下內容

在您的struts.xml中編輯以下內容

<result name="success" type="json">
  <param name="ignoreHierarchy">false</param>
    <param name="includeProperties">
        actionErrors.*,
        actionMessages.*,
        fieldErrors.*
    </param>
</result>

然后在您的js代碼中編輯以下內容。

    var actionErrs= (data.actionErrors); // list of action errors
    var actionMsgs= (data.actionMessages); // list of action messages
    var actionFldErrs= (data.fieldErrors); // list of field errors

   var alertMessage="";
    var i=0;
    for(i=0;i<actionErrs.length; i++){
    alertMessage=alertMessage+" "+actionMessages[i];
    }

    alert(alertMessage);

在您的JSP中進行 編輯 ,而不是以下內容,

<s:if test="hasActionErrors()">
       <s:actionerror />
</s:if>

采用

<div id="err"></div>

並在您的js代碼中添加以下行

document.getElementById("err").innerHTML=alertMessage;

檢查結果名稱

如果您的方法簽名如下所示,

public String getJsonData(){
if(....){
return ERROR;
}
return SUCCESS
}

您可以通過以下js代碼獲取數據,

var actionErrs= (data.actionErrors); // list of action errors
var actionMsgs= (data.actionMessages); // list of action messages
var actionFldErrs= (data.fieldErrors); // list of field errors

var resultName=(data.getJsonData); // get The method return value

var alertMessage="";
var i=0;
for(i=0;i<actionErrs.length; i++){
alertMessage=alertMessage+" "+actionMessages[i];
}

alert(alertMessage);

您可以配置結果ERROR以將呈現的錯誤頁面片段返回給Ajax響應。

<result name="error">/error.jspx</result>

error.jspx:

<%@ taglib prefix="s" uri="/struts-tags"%>
<%
    request.setAttribute("decorator", "none");
    response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
    response.setHeader("Pragma","no-cache"); //HTTP 1.0
    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
%>
<s:if test="hasActionErrors()">
       <s:actionerror />
</s:if>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM