JSでよく見られる文字列接合処理

15825 ワード

最近ダイナミックなインタフェースを書くときはjsを不定期に使う必要がありますが、文字列のつなぎ合わせやjspファイルでバックグラウンドのデータ変数を取得するのは面倒です.私が出会ったことを挙げて、後でこの問題を見た人に役立つことを望んでいます.
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–これは最も手間がかかり、最もエラーが発生しやすい.ラベルの中でidの値は「」で囲まれているので、例えば の値が静的であることは言うまでもないが、動的な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の のアプリケーションがあります. があれば てもいいです.








    アルファベットで :
    A B C D E F G H I J K L M N O P Q R S T U V W X Y Z その