JSでよく見られる文字列接合処理
15825 ワード
最近ダイナミックなインタフェースを書くときはjsを不定期に使う必要がありますが、文字列のつなぎ合わせやjspファイルでバックグラウンドのデータ変数を取得するのは面倒です.私が出会ったことを挙げて、後でこの問題を見た人に役立つことを望んでいます.
1.JS javaバックグラウンドのjspにおける変数を取得する
jspのhtmlでjavaの変数を取得するには、例えばフォームを書くときのactionでパラメータをバックグラウンドで転送するデータ(2つのパラメータdataBase,table,パラメータ間を&で区切る)
しかしjsはjavaの変数を取得するときに複数の引用符を必要とします.例えば
jsでバックグラウンドパスの1次元配列が必要な場合は、データ名を取得して配列に変換できます.(上のcolumnNameはjavaのバックグラウンドでjsonlibで処理したjson文字列で、下には変換方法が補足されています)
jsに2次元配列が必要な場合は,まずバックグラウンドで2次元配列を1つ加工し,その後Jsonlibで文字列に処理してインタフェースに伝達し,その後jsで文字列を取得し,jsでは上から1次元配列を伝達するように2層の解析を行う.
上の需要を説明して、datasは1つのバックグラウンドから伝わってきた2次元の配列からなるjson列で、初めてlinesの配列に解析して、次元を下げて、それからlinesの中の各要素を解析して、linesの各要素はすべて1次元の配列のjson列で、それからデータを1つのフォームの中のラベルの普通の接合 接合変数の後の変数は、一重引用符で囲むも二重引用符で囲むもよいが、引用符が必要である. パッチid–これは最も手間がかかり、最もエラーが発生しやすい.ラベルの中でidの値は「」で囲まれているので、例えば
1.JS javaバックグラウンドのjspにおける変数を取得する
String columnName=(String)request.getAttribute("columnName");
String datas=(String)request.getAttribute("data");
String dataBase=(String)request.getAttribute("dataBase");
String table=(String)request.getAttribute("table");
%>
jspのhtmlでjavaの変数を取得するには、例えばフォームを書くときのactionでパラメータをバックグラウンドで転送するデータ(2つのパラメータdataBase,table,パラメータ間を&で区切る)
<form id="form" action="save.do?dataBase=&table=">
しかしjsはjavaの変数を取得するときに複数の引用符を必要とします.例えば
<script type="text/javascript">
var columnNames = '';
script>
jsでバックグラウンドパスの1次元配列が必要な場合は、データ名を取得して配列に変換できます.(上のcolumnNameはjavaのバックグラウンドでjsonlibで処理したjson文字列で、下には変換方法が補足されています)
var columnNames = '';
var names=eval(columnNames);
for(var i=0;i//do something};
jsに2次元配列が必要な場合は,まずバックグラウンドで2次元配列を1つ加工し,その後Jsonlibで文字列に処理してインタフェースに伝達し,その後jsで文字列を取得し,jsでは上から1次元配列を伝達するように2層の解析を行う.
<script type="text/javascript">
var datas='';// json
var lines=eval(data);// , json
var idata='';
for(i=0;ivar line=eval(lines[i]);// ,
idata+=''">';// 1
for(var j=0;j'''+j+'" value='+line[j]+'>'; // 2,
// i j i,j input , input
}
idata+=' ';
}
$('#ibody').append(idata);
script>
//
<form id="form" style="margin-left: 10px">
<table id="table" border="1px solid #fff" cellspacing="0px">
<thead id="ihead" bgcolor="#F0F0F0">thead>
<tbody id="ibody">tbody>//
table>
form>
上の需要を説明して、datasは1つのバックグラウンドから伝わってきた2次元の配列からなるjson列で、初めてlinesの配列に解析して、次元を下げて、それからlinesの中の各要素を解析して、linesの各要素はすべて1次元の配列のjson列で、それからデータを1つのフォームの中のラベルの
のこのような形式の1行の1行の1行の文字列idataにつなぎ合わせて、これらをidがibodyのformラベルに挿入します.動的に編集可能なフォームを生成します.2.js接合文字列は一般的に3つの形式である.var idata+='';
var data='dataBase='+""
var ihead+='';
の値が静的であることは言うまでもないが、動的なidを設定するときは気をつけなければならない.idata+='i+'">';
id , ( 2)
idata+='i+''+j+'" value='+line[j]+'>';
だから1つの を して、idをつなぎ わせる '+ +'
を1つの の として することができて、もう1つの はjQueryで にラベルを する も のつなぎ わせを うことができます$("#"+i+"").remove()
したラベルを つけて します.
PS: のバックグラウンドのjson に する を します. のニーズは1 を する があり、2 も であるので、 のやり は のデータはすべてリストに され、jsonlibで された リストの でjson 、 えば のcolumnNameに される. List columnNameArr = newArrayList();
columnNameArr.add(" ");
String columnName=JSONArray.fromObject(columnNameArr).toString();
ServletActionContext.getRequest().setAttribute("columnName", columnName);// request
を する ListObject>> datas = new ArrayListObject>>();
while (dataRet.next()) {
List<Object> one = new ArrayList<Object>();
for (String s : columnNameArr) {
one.add(dataRet.getString(s));
}
datas.add(one);
}
String data = JSONArray.fromObject(datas).toString();
はすべて じで、リストの にたくさんのリストが っています.これは が っている です.もっと なものがあるかもしれません.それでは、 に います.jsonlibツールクラスを する は、jsonlib のjarパッケージをいくつかインポートする があります.もし がアップロードしなかったら、 のリソースにアップロードします. がアップロードしたリソースには、mapの 、 クラスの など、jsonlibの のアプリケーションがあります. があれば てもいいです.
があるかもしれません