Struts2 <result>/index.jsp</result> 返回整個頁面 HTML,但前端使用 jQuery EasyUI 發送 AJAX 請求,瀏覽器不會自動跳轉,只是將回應內容放入 XMLHttpRequest.responseText。
採用「AJAX 回傳標記 + 前端跳轉」模式:
boolean success 屬性及 getter/setter。struts.xml 繼承 json-default,<result type=\"json\"> 回傳 JSON。success: function(data) { if (data.success) window.location.href = '/index.jsp'; }
// Action
private boolean success;
public boolean isSuccess() { return success; }
public void setSuccess(boolean success) { this.success = success; }
// struts.xml
<package name=\"default\" extends=\"json-default\">
<action name=\"myAction\" class=\"com.example.MyAction\">
<result type=\"json\"></result>
</action>
</package>
// JS
$.ajax({
url: 'myAction',
dataType: 'json',
success: function(data) {
if (data.success) window.location = '/index.jsp';
}
});
此法符合 AJAX 無刷新體驗,又能實現邏輯跳轉。