Action
クラスにAjax リクエストを送信し、 Result
.
ここに私のjQueryコードがあります:
$('#button').click(function(){
$.get('ajax.action','query="hi server:)")',function(x,r,s){
alert("server said :"+r+"-stat-"+s.status);
})
ここでは、応答は常に「成功」であり、期待される応答ではありません。
これが私の Action クラスの execute() です。
String response;
String query;
@Override
public String execute() throws Exception {
response=query+" - Struts added :";
setResponse(response);
return SUCCESS;
}
文字列応答とクエリの getter と setter が記述されています (ここには示されていません)。
これが私のResult
クラス です
public class AjaxResponse implements Result {
@Override
public void execute(ActionInvocation ai) throws Exception {
System.out.println("I am the Ajax Rsponse RESULT");// this is displayed in the console
PrintWriter out =
ServletActionContext.getResponse().getWriter();
try {
ServletActionContext.getResponse().setContentType("text/plain");
ValueStack valueStack = ai.getStack();
// Object resObj= valueStack.findValue("response");
out.print("hi I am server ...");
System.out.println("Response WROTE---");
} catch (Exception e) {
e.printStackTrace();
}finally{
out.close();
System.out.println("Response Close "); // this is displayed in the console
}
}
}
Result クラスを struts.xml に追加する方法は次のとおりです。
<result-types>
<result-type name="ajaxResponse" class="com.app.ajax.AjaxResponse" />
</result-types>
これが私がアクションを宣言した方法です
<action name="ajax" class="com.app.action.AjaxSupport">
<result type="ajaxResponse"/>
</action>
アラートは、期待される結果 'hi I am server ...' ではなく、常にSUCCESSのみを提供します。
コンソールに Result クラスの出力が表示されます-("I am the Ajax Response RESULT","Response WROTE---","Response Close") タスクを疎結合するために別の Result クラスを使用し、アクション内でビジネス ロジックを実行しましたクラス。
私の問題がどこにあるか教えてください。