2017-02-21 7 views
0

J'utilise la syntaxe de backticks afin de générer un code Java avec Javascript:Utilisation de backticks (``) dans les résultats JS en lignes vides

${body ? `con.setDoOutput(true); 
DataOutputStream wr = new DataOutputStream(con.getOutputStream()); 
wr.writeBytes(${JSON.stringify(body)}); 
wr.flush(); 
wr.close();` : ``} 

int responseCode = con.getResponseCode(); 

Toutefois, lorsque le corps est nul, le code généré contient 3-4 lignes vides puis la ligne "int responseCode ..". J'ai essayé d'extraire la partie où le corps est vrai dans une constante séparée ou de déplacer le `` comme premier dans la déclaration et aucun d'entre eux ne fonctionne. Aucune suggestion?

Merci d'avance!

+2

Pourquoi avez-vous '$ {' before 'body'? –

+0

La syntaxe '$ {....}' ne fonctionne qu'à l'intérieur des guillemets, c'est pourquoi il est curieux que la première ligne ait cette syntaxe en dehors des guillemets. Plus curieusement, vous n'obtenez pas une erreur "Erreur de syntaxe: jeton inattendu {"? – Amy

+0

Désolé. C'est à l'envers, c'est quelque chose comme: '' ..... $ {body? 'con.setDoOutput (true); DataOutputStream wr = nouveau DataOutputStream (con.getOutputStream()); wr.writeBytes ($ {JSON.stringify (body)}); wr.flush(); wr.close(); ':' '} int responseCode = con.getResponseCode(); ..... '' –

Répondre

0

Peut-être que si vous vérifiez correctement le du corps var, par exemple:

typeof body == "undefined" ? `con.setDoOutput(true); 
DataOutputStream wr = new DataOutputStream(con.getOutputStream()); 
wr.writeBytes(${JSON.stringify(body)}); 
wr.flush(); 
wr.close();` : `` 

retournera la chaîne ci-dessous:

"con.setDoOutput(true); 
DataOutputStream wr = new DataOutputStream(con.getOutputStream()); 
wr.writeBytes(${JSON.stringify(body)}); 
wr.flush(); 
wr.close();" 

Ne pas utiliser simplement body ? "string" : "", faire une opération avec var du corps. (par exemple body == "" ou typeof body == "undefined")

+0

ne fonctionne pas :( –

+0

pouvez-vous poster un jsfiddle avec votre js? –