私がやろうとしているのは、ブラウザのアドレスバーでJavaコードを介してjsonオブジェクトを解析することです。取得したいJSONオブジェクトは次のとおりです。
{idUtente : "idUtente"}
だから私はこのコードを実装しました
public void inviaMailConferma(Utente utente) throws Exception {
SimpleMailMessage message = new SimpleMailMessage();
message.setTo(utente.getEmail());
message.setSubject("Conferma registrazione a Portfolio Online");
InetAddress ip = InetAddress.getLocalHost();
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript");
String idUtente = utente.getUsername();
Object eval = engine.eval("print(encodeURIComponent(idUtente))");
message.setText("Ciao " + utente.getUsername() + "! Per registrarsi al sito, cliccare il seguente link: " + ip.getHostAddress() + ":8084/VenditaGioielli/confermaRegistrazione?data=" + eval.toString());
mailSender.send(message);
}
engine.eval を実行すると、この例外が発生します
ex = (javax.script.ScriptException) javax.script.ScriptException:
sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "idUtente" is not
defined. (<Unknown source>#1) in <Unknown source> at line number 1
java オブジェクトを engine.val に解析する方法がわかりません。
編集
今、私はこのコードに来ました
ScriptEngine engine = factory.getEngineByName("JavaScript");
String idUtente = utente.getUsername();
engine.put("idUtente", idUtente);
Object eval = engine.eval("print(encodeURIComponent(idUtente))");
しかし、engine.eval は null を返します!
編集
今、私はこのコードに来ました
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript");
ScriptContext scriptContext = new SimpleScriptContext();
Bindings binding = scriptContext.getBindings(ScriptContext.ENGINE_SCOPE);
String idUtente = utente.getUsername();
engine.put("idUtente", idUtente);
Object eval = engine.eval("print(encodeURIComponent(idUtente))", binding);
そして私は次の例外があります:
"sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "idUtente" is not defined. (<Unknown source>#1)"