[英]Struts 2 result type redirectAction forward to wild card action method
[英]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( 4xx
或5xx
),例如500
(內部服務器錯誤),否則,您將始終輸入.done
為此,可以在Struts2中使用:
Struts2 JSON插件返回以下結果,如下所示:
<result name="error" type="json"> <param name="errorCode">500</param> </result>
Struts2 HttpHeader結果 。 由於錯誤,該文檔目前不可用; 我已經為此打開了JIRA票證 ,同時您可以檢查Javadoc :
<result name="error" type="httpheader"> <param name="error">500</param> </result>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.