簡體   English   中英

在Struts 2的同一操作方法中使用多個結果類型?

[英]Using more than one result type in the same action method in struts 2?

我在依賴於ajax調用的操作方法中使用了結果類型流。 此ajax調用是在我的JSP上的文本字段之外的焦點上激活的。 如果用戶輸入的數據已經存在於后端服務器中,則此AJAX調用的功能是顯示錯誤。 基本上,服務器返回一個狀態代碼,該狀態代碼指定業務邏輯的結果,即在我的情況下,如果我的服務器返回1016,則該服務器中已經存在數據,因此顯示錯誤。

但是,我還必須在我的操作類方法中為代碼實現異常處理。 在這種情況下,實際上發生的是,我要聚焦的頁面在與本應顯示錯誤的位置混雜在一起,並且在我的網頁上得到了非常難看的輸出。

我嘗試了所有可以重定向到另一頁的方法,但似乎無濟於事,我所得到的只是將2頁混為一談。

這是我的用於particluar方法的struts.xml代碼(如前所述):

<action name="useridCheck"
       class="com.action.registration.RegistrationAction" 
      method="isUserIdAvailable">
        <result type="stream">
            <param name="contentType">text/html</param>
            <param name="inputName">inputStream</param>
        </result>
</action>

這是AJAX方法:

 request = $.ajax({
              url: "ao/useridCheck.action",
              method: "POST",
              data: { customerLoginId : userid  },
              dataType: "text"
            });
            request.done(function( response ) {
                if(response!="") {
                             $('.error-customerId').html('<span class="clearfix"><img src="../images/ao/ico_error_small.png" alt="error message" class="pull-left error-message" /><span class="error-rgt">'+response+'</span></span>');
                             $('.error-customerId').prev().addClass('error-field');
                             v = 1;

                }
                else
                {
                    $('.error-customerId').text('');
                    $('.error-customerId').prev().removeClass('error-field');
                }
                //$('#customerLoginId').addClass('error-field');
              // $('.error-amount').prev().addClass('error-field');

            });

            request.fail(function( jqXHR, textStatus ) {
            alert( "Request failed: " + textStatus );

        });

我必須在struts.xml或AJAX或我的操作方法中做什么,以便將頁面重定向到焦點上?

錯誤是合乎邏輯的:如果返回錯誤結果或映射到異常的錯誤,則仍在返回成功結果,因為相對httpheader(statusCode)始終為200 (成功)。

這僅對您來說是一個錯誤,瀏覽器(以及jQuery回調函數)無法知道這是一個錯誤結果。

要輸入request.fail(function( jqXHR, textStatus ) {部分,您需要發送不同的statusCode( 4xx5xx ),例如500 (內部服務器錯誤),否則,您將始終輸入.done

為此,可以在Struts2中使用:

  1. Struts2 JSON插件返回以下結果如下所示:

     <result name="error" type="json"> <param name="errorCode">500</param> </result> 
  2. Struts2 HttpHeader結果 由於錯誤,該文檔目前不可用; 我已經為此打開了JIRA票證 ,同時您可以檢查Javadoc

     <result name="error" type="httpheader"> <param name="error">500</param> </result> 

暫無
暫無

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

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