Cómo llamar a un método Java con argumentos definidos en la clase Java, desde JSP usando JSTL/EL. El método es devolver matrices. Se puede usar cualquier valor de retorno.Cómo llamar al método parametrizado desde JSP usando JSTL/EL
Respuesta
Proporcione al JSP una referencia a una instancia de la clase que tiene el método y llámelo.
Probablemente se pregunte quién le da esa instancia al JSP; es un servlet en el arreglo MVC modelo-2.
Así es como el flujo funcionará:
- Presentar una solicitud GET/POST desde un JSP a un servlet.
- Servlet actúa en esa solicitud y hace algún trabajo en nombre del JSP. Pone todos los objetos necesarios en solicitud, sesión u otro alcance apropiado.
- El servlet enruta la respuesta al siguiente JSP, que podría ser el mismo que el JSP solicitante.
- Enjuague, repita.
Si está utilizando JSF, puede utilizar un acto de frijol como modelo en Ver ámbito, y la carga de la fuente de datos automática. Y si usa JSP, ¿qué le parece usar la etiqueta de TLD? ¿Y usando la etiqueta JSTL <c:foreach>
? ¿Guarda la memoria de guardar en la sesión, o la guarda en sesión y la elimina cuando se completa el evento de carga? De alguna manera como esto (JSTL + TLD)
<c:forEach items="${myTag:getProductByPage(page)}" var="p">
Product name: ${p.productName}
</c:forEach>
Sólo puede invocar métodos con argumentos en El si usted se está dirigiendo y ejecutando un Servlet 3.0 contenedor compatible (por ejemplo Tomcat 7, Glassfish 3, JBoss AS 6, etc.) con un web.xml
declarado conformado Servlet 3.0. Esta versión de servlet viene con EL 2.2 que permite invocar métodos de instancia arbitrarios con argumentos.
Asumiendo que usted tiene una ${bean}
en el ámbito que se refiere a una instancia de una clase que tiene un método algo así como public Object[] getArray(String key)
, entonces usted debería ser capaz de hacer esto:
<c:forEach items="${bean.getArray('foo')}" var="item">
${item} <br />
</c:forEach>
o incluso con otro variable como argumento
<c:forEach items="${bean.getArray(foo)}" var="item">
${item} <br />
</c:forEach>
Pero si no dirigirse a un contenedor de Servlet 3.0, entonces no se puede llamar a los métodos con argumentos en EL en absoluto. Su mejor opción es hacer el trabajo en el servlet de preprocesamiento como lo sugiere Duffymo.
Object[] array = bean.getArray("foo");
request.setAttribute("array", array);
// ...
Como una alternativa completamente diferente, puede crear una función EL que delegue la llamada al método. Puede encontrar un ejemplo de kickoff en algún lugar cerca de la parte inferior de this blog. Desea llegar a algo como como:
<c:forEach items="${util:getArray(bean, 'foo')}" var="item">
${item} <br />
</c:forEach>
con
public static Object[] getArray(Bean bean, String key) {
return bean.getArray(key);
}
Estoy haciendo algo similar con el objeto de solicitud, invocando 'isUserInRole ('role')' pero eclipse piensa que este es un método get y se queja sobre el método 'getIsUserInRole()' no existente. ¿Sabes cómo se puede arreglar esto? Estoy usando glassfish v3. Gracias, D. – Daniel
@ Daniel: Eclipse es débil en cuanto a la verificación y validación de la sintaxis EL. Simplemente desactive la validación de EL en Eclipse, o instale JBoss Tools. – BalusC
Gracias. Lo deshabilité y funcionó. – Daniel
La anterior solución de trabajo aún no ha para mí. Tenía una función getRemitanceProfileInformation(user)
en mi clase Java. creé una useBean de clase java y luego se invoca
<c:set var="paymentValueCode" value='remittanceaddr.getRemitanceProfileInformation("${user}")'/>
y funcionó.
Referencia incorrecta, quién sabe cuál fue la solución * anterior * cuando respondió. – madth3
- 1. ¿Cómo llamar al método usando su nombre?
- 2. Cómo llamar un puntero al método desde otro método
- 3. Comando para llamar al método desde viewmodel
- 4. Cómo llamar al método desde el servicio de Windows
- 5. Cómo llamar al método desde MethodCallExpression en C#
- 6. Cómo llamar al método vararg Java desde C con valist
- 7. ¿Cómo usar el método parametrizado con NSNotificationCenter?
- 8. JasperReports: Cómo llamar al informe en la página jsp
- 9. Llamar a un constructor parametrizado de XAML
- 10. Llamar al método jQuery desde el atributo onClick en HTML
- 11. PHP5.3: error de "Llamar al método indefinido" al llamar a invocar desde la variable de clase
- 12. Cómo llamar al método didSelectRowAtIndexPath con UITapGestureRecognizer?
- 13. Usando -performSelector: frente a simplemente llamar al método
- 14. Java (JSP/Servlet): equivalente de getServletContext() desde adentro de .jsp
- 15. Llamar a cualquier método Java desde C#
- 16. Error: Intento llamar al método privado
- 17. Llamando al método Win32 API desde Java
- 18. spring mvc addAttribute al modelo, cómo obtenerlo desde jsp javascript
- 19. Llamar al método AppDelegate de la clase
- 20. Al pasar un parámetro dinámico lanza RuntimeBinderException al llamar al Método desde la interfaz heredada
- 21. Cómo llamar a un método de controlador desde Javascript
- 22. Llamar a un método miembro no estático desde otro método
- 23. ¿Llamar al código de Scala desde Java?
- 24. Mockito: intentar espiar el método es llamar al método original
- 25. ¿Cómo subir archivos al servidor usando JSP/Servlet y Ajax?
- 26. Llamar a un método de fragmento desde una actividad primaria
- 27. Llamar al método estático genérico en PowerShell
- 28. Llamando al método Bean administrado desde JavaScript
- 29. Java ¿Cómo llamar al método de los abuelos?
- 30. ¿Es posible llamar al método principal pasando args [] desde otro método?
Estoy usando struts tiles. Podría por favor enviar su explicación, más sobre necesitamos llamar a un método que acepte un parámetro, aquí serán los valores ollean establecidos en JSP. –