Come chiamare un metodo Java con argomenti definiti in classe Java, da JSP utilizzando JSTL/EL. Il metodo sta restituendo gli array. È possibile utilizzare qualsiasi valore di ritorno.Come chiamare il metodo parametrizzato da JSP utilizzando JSTL/EL
risposta
Assegnare al JSP un riferimento a un'istanza della classe che ha il metodo e chiamarlo.
Probabilmente stai chiedendo chi fornisce a JSP quell'istanza: si tratta di un servlet nella disposizione MVC modello 2.
Ecco come il flusso funzionerà:
- inviare una richiesta GET/POST da una JSP per un servlet.
- Servlet agisce su tale richiesta e lavora per conto di JSP. Mette tutti gli oggetti necessari in richiesta, sessione o altro ambito appropriato.
- Servlet indirizza la risposta al JSP successivo, che potrebbe essere uguale al JSP richiedente.
- Risciacquare, ripetere.
Se si utilizza JSF, è possibile utilizzare un bean act come modello in View Scope e caricare automaticamente dall'origine dati. E se stai usando JSP, che ne dici di usare il tag TLD? E usando il tag JSTL <c:foreach>
? Salva la memoria dal salvataggio nella sessione, o salva in sessione e rimuovila quando si carica l'evento? Alcuni come come questo (JSTL + TLD)
<c:forEach items="${myTag:getProductByPage(page)}" var="p">
Product name: ${p.productName}
</c:forEach>
È possibile richiamare solo metodi con argomenti a EL, se ci si rivolge e l'esecuzione di un contenitore di 3.0 compatibile Servlet (ad esempio Tomcat 7, Glassfish 3, JBoss AS 6, ecc) con un certificato Servlet 3.0 conforme a web.xml
. Questa versione servlet è accompagnata da EL 2.2 che consente di invocare metodi di istanza arbitrari con argomenti.
Supponendo che hai un ${bean}
nel campo di applicazione che fa riferimento a un'istanza di una classe che ha un metodo simile public Object[] getArray(String key)
, allora si dovrebbe essere in grado di fare questo:
<c:forEach items="${bean.getArray('foo')}" var="item">
${item} <br />
</c:forEach>
o anche con un altro variabile come argomento
<c:forEach items="${bean.getArray(foo)}" var="item">
${item} <br />
</c:forEach>
Ma se non bersaglio un contenitore di Servlet 3.0, allora non si può invocare metodi con argomenti a EL affatto. La soluzione migliore è fare il lavoro nel servlet di pre-elaborazione come suggerito da Duffymo.
Object[] array = bean.getArray("foo");
request.setAttribute("array", array);
// ...
Come alternativa completamente diversa, è possibile creare una funzione EL che deleghi la chiamata al metodo. Puoi trovare un esempio di kickoff da qualche parte vicino al fondo di this blog. Ti piacerebbe finire qualcosa come come:
<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);
}
Sto facendo qualcosa di simile con l'oggetto request, invocando 'isUserInRole ('role')' ma eclipse pensa che questo sia un metodo get e si lamenta del metodo 'getIsUserInRole()' non esistente. Sai come può essere risolto? Sto usando glassfish v3. Grazie, D. – Daniel
@Daniel: Eclipse è debole per quanto riguarda il controllo e la convalida della sintassi EL. Basta disabilitare la convalida EL in Eclipse o installare JBoss Tools. – BalusC
Grazie. L'ho disabilitato e ha funzionato. – Daniel
È possibile che questo lavoro non ha ancora una soluzione per me. Ho avuto una funzione getRemitanceProfileInformation(user)
nella mia classe java. Ho creato un'useBean di classe Java e quindi invocato
<c:set var="paymentValueCode" value='remittanceaddr.getRemitanceProfileInformation("${user}")'/>
e ha funzionato.
Riferimento errato, chissà quale era la soluzione * sopra * quando hai risposto. – madth3
- 1. Come chiamare il metodo dell'oggetto da Thymeleaf?
- 2. Chiamare un metodo java in jsp
- 3. Come utilizzare il metodo parametrizzato con NSNotificationCenter?
- 4. chiamare il metodo Da BackgroundWorker
- 5. Chiamare il metodo BHO da Javascript?
- 6. Chiamare il metodo API Win32 da Java
- 7. chiamare il metodo da query LINQ
- 8. Come chiamare il metodo validateValue
- 9. Come chiamare il metodo vararg Java da C con valist
- 10. JasperReports: Come chiamare il report nella pagina jsp
- 11. Come chiamare il metodo lato server node.js da javascript?
- 12. Chiamare un metodo statico utilizzando un tipo
- 13. Come chiamare il metodo originale da uno swizzled?
- 14. Come trovare e chiamare il metodo javascript da vba
- 15. Come chiamare il metodo da una classe in un'altra (iOS)
- 16. Come chiamare il metodo dichiarato in applet da javascript
- 17. Come chiamare il metodo da MethodCallExpression in C#
- 18. Come chiamare il metodo statico in PowerShell
- 19. Come chiamare un puntatore al metodo da un altro metodo
- 20. Come chiamare un metodo non const da un metodo const?
- 21. Come chiamare un metodo Objective-C da un metodo C?
- 22. Il metodo parametrizzato con un tipo accetta due tipi
- 23. Chiamare un metodo su OnClick utilizzando dattiloscritto
- 24. Come chiamare un metodo da un altro metodo nell'obiettivo C?
- 25. come creare jqGrid utilizzando jsp
- 26. Java Come chiamare il metodo dei nonni?
- 27. Meteor.js: come chiamare il metodo helper dall'evento?
- 28. Come chiamare il metodo didSelectRowAtIndexPath con UITapGestureRecognizer?
- 29. Chiamare il metodo di istanza da un costruttore in C#
- 30. Chiamare un metodo sovrascritto da un costruttore
Sto usando le tessere di puntoni. Potresti per favore aggiungere una spiegazione, più oltre dobbiamo chiamare un metodo che accetta un parametro, qui saranno i valori ollean impostati in JSP. –