私のjavascript submit関数でajax呼び出しを行っています。このajax呼び出しでは、配列(globalSelection)をデータとしてサーブレットに渡しています。この配列は関数textSelectionの要素で構成され、下にも貼り付けられます。配列値がAjaxから渡されている間nullになる
globalSelection =[];
function submit() {
console.log("globalSelection start")
console.log(globalSelection)
console.log("globalSelection end")
$.ajax({
async : false,
type : "POST",
url : 'http://example.com:8080/myApp/DataServlet',
data: {globalSelection:globalSelection},
success : function(data) {
alert(data)
},
error : function(data, status, er) {
alert("error: " + data + " status: " + status + " er:" + er);
}
});
}
function textSelection(range, anchorNode, focusNode) {
this.range = range;
this.type = 3;
this.rCollection = [];
this.textContent = encodeURI(range.toString());
this.anchorNode = anchorNode;
this.focusNode = focusNode;
this.selectionId = getRandom();
this.yPOS = getYPOS();
this.getTagName = function(range) {
var el = range.startContainer.parentNode;
return el;
}
this.getTagIndex = function(el) {
var index = $(el.tagName).index(el);
return index;
}
this.simpleText = function(node, range) {
if (!node)
var entry = this.createEntry(this.anchorNode, this.range);
else
var entry = this.createEntry(node, range);
this.rCollection.push(entry);
this.highlight(this.rCollection[0].range);
this.crossIndexCalc();
textSelection._t_list.push(this);
pushto_G_FactualEntry(this);
}
this.compositeText = function() {
this.findSelectionDirection();
var flag = this.splitRanges(this.anchorNode, this.focusNode,
this.range.startOffset, this.range.endOffset);
if (flag == 0) {
for (j in this.rCollection) {
this.highlight(this.rCollection[j].range);
}
}
this.crossIndexCalc();
textSelection._t_list.push(this);
pushto_G_FactualEntry(this);
}
}
下記のブラウザコンソールの画面が表示され、globalSelection(配列)が表示されます。私のサーブレットで
String[] arrays = request.getParameterValues("globalSelection[]");
System.out.println(arrays);
ここで私は、配列にnull値を取得していますが、次のように私は、この配列を取得しています。
サーブレットへの簡単なテストのためにsubmit関数でglobalSelectionを次のように置くと、配列を取得できます。
var globalSelection = ["lynk_url", "jsonBody", "lynk_dummy1", "lynk_dummy2", "lynk_name", "lynk_desc", "lynk_flag"];
私の実際のglobalSelectionがサーブレットでnullを表示する理由は、ここで間違っています。
Javaサーバーにはどのようなタイプがありますか?私の推測では、あなたはString []を取得しようとしていますが、実際にはtextSelection []を送信しています。 textSelectionのどのフィールドをバックエンドで受け取りたいですか?バックエンドにフレームワークを使用していますか?なぜなら、オブジェクトの配列を送信するのは簡単ではないからです(バックエンドでオブジェクトを再構成する必要があるためです)。 –
@ tudor.gergelyサーブレットとJSPのみを使用しています。フレームワークではありません。この配列からサーブレットまでのすべてのフィールドが必要です。次に、json変換を行い、DBに格納します。 –