2011-12-04 5 views
0

WebアプリケーションにSpring MVCを使用しています。私はファイルアップロード機能を実装しています。チュートリアルの後、私はアップロードされたファイルを "ファイル"の入力タイプのサブミットアクションを通してサーバーに送ることができました。次に、アップロードしたxlsファイルをサーバー側で解析し、解析されたデータ(カスタムオブジェクトの3つのリスト)を同じフォームに送り返して表示する必要があります。 ModelAttributeを介してデータを送り返しました。Spring MVCファイルをアップロードして解析済みのデータを返信する

しかし、私の問題はクライアント側では、JavaScriptのカスタムオブジェクトのリストを使用する必要がありますが、カスタムオブジェクトの各フィールドはjstlタグライブラリで取り出すことしかできませんが、私は他のロジックの実装のためにそれらを必要とする私のjavascriptのオブジェクト。

次に、Ajax呼び出しがJavascriptで使用できるJSON応答を返すことができるため、Ajaxファイルアップロードプラグインを試しました。しかし、プラグインが正しく動作することはできません。

私は数日間この問題を抱えています。 <誰でもこれを助けることができますか? JavascriptでModelAttributeを使用する方法とAjaxの呼び出し方法のどちらの方法も問題ありません。どうもありがとうございました!!!

答えて

0

モデルオブジェクトをHTMLに単純に「平坦化」してから、DOM APIを使用してJavascriptからアクセスできる理由はありますか?

カスタムオブジェクトの3つのリストが返ってきました。ですから、people呼ばModelAttributePersonオブジェクトのリストがある場合、たとえば各リストのについて、あなたは、(隠された)HTMLテーブルを構築する方法:あなたのJavaScriptで今

<table id="people-table"> 
    <c:forEach var="person" items="${people}"> 
    <tr id="${person.id}> 
     <td class="person-name">${person.name}</td> 
     <td class="person-age">${person.age}</td> 
     <td class="person-height">${person.height}</td> 
    </tr> 
    </c:forEach> 
</table> 

を、あなたが行を反復処理people-tableに、あなたがする必要があるものは何でもやって - 例えばjQueryを使用して:

$("#people-table tr").each(
    var personId = $(this).attr("id"); 
    var personName = $(this).find("td.person-name").text(); 
    // etc, etc 
    // Do something with these as required 
); 

それはおそらく最もエレガントな解決策ではないのですが、それは、少なくともデバッグするのは簡単です - あなたはいつもちょうどかどうかを確認するためにFirebugのなどでtableを検査することができますデータは正しい、そこから、サーバーサイドまたはJavascriptでデバッグを続行するかどうかがわかります。

+0

大変ありがとうございます、millhouse!モデルオブジェクトをHTMLにフラット化することは、実装とデバッグの両方に簡単なアプローチであることに同意します。このアプローチの私の唯一の懸念は、これはWebページのソースから誰でも見ることができるHTMLで私のビジネスロジックの一部を明らかにするということです。私のオブジェクトのフィールドがjavascriptで割り当てられていれば素晴らしいだろう。 – user1079734

+0

Javascript処理の最終ステップとしてDOMから 'table'をいつでも削除することができます! :-) – millhouse

+0

はい、削除する "テーブル"の目的を果たします。ありがとう! – user1079734

関連する問題