2011-01-26 57 views

Respuesta

67
alert("${variable}"); 

o

alert("<%=var%>"); 

o un ejemplo completo

<html> 
<head> 
<script language="javascript"> 

function access(){ 
    <% String str="Hello World"; %> 
    var s="<%=str%>"; 
    alert(s); 
} 

</script> 
</head> 

<body onload="access()"> 
</body> 

</html> 

Nota: desinfectar la entrada antes de que lo hacen, puede abrir montón de posibilidades XSS

+3

espero ejemplo sería hacer que funcione ahora :) –

+2

también leen este artículo, expalins el concepto de JS y JSP con mucha claridad - http: //balusc.blogspot .in/2009/05/javajspjsf-and-javascript.html –

+1

@JigarJoshi: Quiero decir, sin ofender, pero creo que tu respuesta es muy sucia/vieja escuela, sospecho que simplemente hay mucha ignorancia en este tema. ¿Qué piensas de mi respuesta a continuación? –

6
<% String s="Hi"; %> 
    var v ="<%=s%>"; 
10

Asumiendo estás hablando de Java Script en un documento HTML.

No puede hacer esto directamente ya que, en lo que respecta al JSP, está generando texto y, en lo que respecta a la página, solo está obteniendo un documento HTML.

tendrá que generar código Javascript para crear una instancia de la variable, teniendo cuidado de evitar cualquier carácter con un significado especial en JS. Si acaba de volcar los datos (como lo proponen otras respuestas) encontrará que se cae cuando los datos contienen nuevas líneas, comillas de caracteres, etc.

La forma más sencilla de hacer esto es utilizar una biblioteca JSON (hay un montón que aparece en la parte inferior de http://json.org/) y luego tener la salida JSP:

<script type="text/javascript"> 
    var myObject = <%= the string output by the JSON library %>; 
</script> 

esto le dará un objeto que se puede acceder como:

myObject.someProperty 

en el JS.

+1

¿Puedes proporcionar un jsFiddle por favor? –

+0

No. JSFiddle no ejecutará JSP. – Quentin

+1

es justo, pero ¿podría simplemente codificar el valor que generaría el JSP? –

19

La manera más limpia, por lo que yo sé:

  1. añadir la variable de JSP para Data- de un elemento HTML * atribuir
  2. entonces lee este valor a través de Javascript cuando se requiera

Mi opinión con respecto a las soluciones actuales en esta página SO: la lectura "directamente" de los valores JSP utilizando java scriplet dentro de código JavaScript real es probablemente lo más desagradable que podría hacer. Me hace querer vomitar. jaja. En serio, intenta no hacerlo.

La parte HTML sin JSP:

<body data-customvalueone="1st Interpreted Jsp Value" data-customvaluetwo="another Interpreted Jsp Value"> 
    Here is your regular page main content 
</body> 

La parte HTML cuando se utiliza JSP:

<body data-customvalueone="${beanName.attrName}" data-customvaluetwo="${beanName.scndAttrName}"> 
    Here is your regular page main content 
</body> 

La parte Javascript (jQuery para simplificar):

<script type="text/JavaScript" src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.js"></script> 
<script type="text/javascript"> 
    jQuery(function(){ 
     var valuePassedFromJSP = $("body").attr("data-customvalueone"); 
     var anotherValuePassedFromJSP = $("body").attr("data-customvaluetwo"); 

     alert(valuePassedFromJSP + " and " + anotherValuePassedFromJSP + " are the values passed from your JSP page"); 
}); 
</script> 

Y aquí es el jsFiddle para ver esto en acción http://jsfiddle.net/6wEYw/2/

Recursos:

+0

Este método funciona bien con el objeto Model siendo un String básico, sin embargo, si se trata de un valor JSON, todas las comillas dobles dentro del JSON deberían escaparse, lo que es problemático. –

+0

@JamieBurke, nunca intenté usarlo para almacenar valores JSON. Puede haber una solución genérica para ese problema específico, esto necesitaría investigación. –

+0

Estoy teniendo dificultades para entender por qué una solución de 1 línea te hace 'querer vomitar', mientras que este enrevesado lío de alguna manera no lo hace. ¿Me cuidas para iluminarme? ¿Hay algún caso marginal que no esté considerando? – katzenhut

0

En primer lugar, el script java es el lenguaje de scripting del lado del cliente mientras que jsp es el idioma del lado del servidor al que no puede acceder, procesar cualquier variable del lado del servidor en el servidor sin enviar solicitud al servidor solo después de la solicitud recibida en el servidor. variables de idioma lo que sólo hay manera de pasar por petición

otra cosa es que "¿Cómo enviar estas variables con el servidor" hay dos opciones ... de cualquier uso en el campo oculto o usuario objeto window.location de js ......

`window.location.replace("home.jsp?nm="+v);` 
`<%String name=request.getParameter("nm");%>` 

window.location.href("home.jsp?nm="+v); 
<%String name=request.getParameter("v");%> 

entonces son capaces de acceder a los datos del lado del cliente en JSP

+1

OP quiere leer la variable JSP (lado del servidor) de JS, y no al revés. – Suma

Cuestiones relacionadas