Strut2 を使用して Glassfish Web サーバーを実行しています。ページを更新せずに、ページのアクション クラスから json データを取得したいと考えています。つまり、ユーザーが設定を変更すると、ページを更新せずに更新されたデータを自動的に表示したいということです。
Strut2アクションクラスへのAjax呼び出しを行うことは私の解決策のようですが、私のGoogle検索はすべて、ページの更新が必要な場合に結果をもたらしました。
アクション クラス:
...
@Override
public String execute() throws Exception {
result = "\"{\"age\":100,\"name\":\"dude\"}";
return SUCCESS;
}
...
ストラット.xml:
<package name="default" namespace="/" extends="json-default">
<action name="getData" class="action.getData" method="execute">
<result type="json" />
</action>
</package>
ajax 呼び出し:
jQuery.ajax(
{
type: 'POST',
url: '/proj/getData',
data: {id: $('#id').val()},
dataType: 'json',
contentType: 'application/json; charset=utf-8',
success: function(data){
alert(data.result);
},
error: function(XMLHttpRequest, textStatus, errorThrown){
alert('Error ' + textStatus);
alert(errorThrown);
alert(XMLHttpRequest.responseText);
}
});
上記のコードは、アクション クラスの正しい関数を正しく呼び出しますが、2 つの問題があります。
- サーバー側で ajax 呼び出しのデータ セクションにある ID データ セットを取得する方法がわかりません。
リターン時にサーバー側で次のエラーが発生します。
WARNING: StandardWrapperValve[default]: PWC1406: Servlet.service() for servlet default threw exception java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils at org.apache.struts2.json.SerializationParams.<init>(SerializationParams.java:57) at org.apache.struts2.json.JSONResult.writeToResponse(JSONResult.java:207) at org.apache.struts2.json.JSONResult.execute(JSONResult.java:171)
私はstrut2が初めてで、ajaxとstrutsで同様のことをしたことは知っていますが、これを理解できないようですので、助けていただければ幸いです。