2016-05-20 11 views
1

htlmページのJavaメソッドから返されるJson Stringを印刷できません。私はJavaScriptでメソッド 'Java'を呼び出すことはできません。あなたは私にいくつかのヒントを教えてもらえますか?JsonがJavaメソッドをJavaScriptに呼び出す方法は?

Javaクラス

import com.google.gson.Gson; 
import com.google.gson.annotations.SerializedName; 
import com.google.gson.reflect.TypeToken; 
import java.util.ArrayList; 
import java.util.List; 

public class JsonDiProva { 

public String proof() { 

    List<String> names = new ArrayList<String>(); 
    names.add("Alice"); 
    names.add("Bob"); 
    names.add("Carol"); 
    names.add("Mallory"); 

    Gson gson = new Gson(); 
    String jsonNames = gson.toJson(names); 

    return jsonNames; 

    } 
} 

JSPページ

<p id="demo"></p> 
<script> 
var prv = JSON.parse('<% new JsonDiProva().proof() %>;'); 
document.getElementById("demo").innerHTML = prv; 
</script> 

答えて

1

1)あなたの%>;は、ここでは、JSONが無効になります:

var prv = JSON.parse('<% new JsonDiProva().proof() %>;'); 

それはセミコロン気づく、JSON.parse('["a","b","c"];')をしようとしますので、あなたのproof方法は、おそらく、["a","b","c"]のようなものを返すためだ - セミコロンと["a","b","c"];が有効なJSONの構文ではありませんので、失敗します。

それは次のようになります。

var prv = JSON.parse('<% new JsonDiProva().proof() %>'); 

しかし、これはとにかくそれを行うには奇妙な方法のように見える、私はちょうどこのようにそれを記述します

var prv = <% new JsonDiProva().proof() %>; 

これは動作します結果理由var prv = ["a","b","c"];のようになります。これは私たちが欲しいものです。追加の解析は必要ありません。

2)おそらく配列をinnerHTMLに割り当てています。私はこれがあなたが期待した通りに動作しないと思う。

まず、実際にHTMLを表示しない限り、innerTextではなくinnerHTMLを使用する必要があります。第2に、配列は暗黙のうちにa,b,cのような文字列に変換されます。

document.getElementById("demo").innerHTML = prv.join(", "); 

注コンマの後に余分なスペースなので、その後a, b, cのように表示されます:あなたは、おそらくこのように、それは立派に見えるようにjoinを呼び出す必要があります。

(ここでは他の利点は、あなたがそうでなければ誤っprvが文字列であることを信じて、それにreplaceのようなものを呼び出し、それが動作しませんなぜ不思議かもしれないということです。)

+0

それはまだそれを印刷することはできません。私はあなたのヒントを失敗させました。 – sean

+0

エラーは何ですか? – CherryDT

関連する問題