JSTL chiamata di un metodo che non è un setter o un getter

ho questi metodo in una classe:

 public HarfDate getHarfTo() {
        return to;
      }

mi chiedo solo come chiamare in JSTL, come ho cercato di chiamare:

${exam.getHarfTo()}

ma non funziona!!

Nota: esame di stato è un’istanza della classe che racchiude questi metodo

  • non è un membro statico all’interno della classe, se la soluzione è quella di rendere il metodo statico
  • Alex Theedom risposta è corretta in questo caso particolare. Ma sono curioso: che cosa è il servlet specification numero definito nel web.xml? Se è inferiore a 2.5, provare a impostare a 2.5 e provare di nuovo. Credo che DOVREBBE essere possibile richiamare i metodi da un’espressione EL poiché il 2.5 servlet specification.
  • hai avuto la risposta?? Causa io sto affrontando lo stesso problema…..

 

3 Replies
  1. 8

    L’istanza di exam oggetto deve essere all’interno di un EL campo di applicazione come pageScope. Supponendo che il exam oggetto di riferimento è riferito al pageScope come “esame”, le seguenti EL chiamerà il getHarfTo metodo:

       ${exam.harfTo}

    NOTA: non è possibile chiamare un metodo setter.

    Di espandere al di sopra (e solo per fare un esempio) si può impostare l’ exam istanza in pageScope utilizzo di scriptlet (nota che gli scriptlet sono raccomandate questo è solo un esempio per chiarimenti)

        <%
            com.example.Exam exam = new com.example.Exam();
            pageContext.setAttribute("exam", exam, PageContext.PAGE_SCOPE);
        %>

    ora siamo in grado di accedere all’esame dell’oggetto via EL: ${esame.harfTo}

    L’esame in oggetto può essere aggiunto ad altri ambiti come ad esempio la richiesta di ambito e la portata di sessione.

    Scriptlet e EL

       <%
            java.util.ArrayList cities = new java.util.ArrayList();
            cities.add("NYC");
            cities.add("SFO");
       %>

    Le variabili create in uno scriptlet non sono direttamente accessibili alla EL. Così, la città di variabile non può essere utilizzato nel tag JSTL.

    Per farlo, abbiamo bisogno di mettere in un certo ambito. Per esempio:

        <%
            java.util.ArrayList cities = new java.util.ArrayList();
            cities.add("NYC");
            cities.add("SFO");
            pageContext.setAttribute("cities", cities, PageContext.PAGE_SCOPE);
        %>

    Questo rende l’oggetto a cui si riferisce città variabile, disponibile in pageScope con il nome di “città”.

        <select name="Cities">
               <c:forEach var="city" items ="${cities}">
                      <option> ${city}</option>
               </c:forEach>
        </select>

    Città variabile può ora essere letta.
    Non si può avere una scriptlet la proprietà di un’espressione EL.

        <select name="Cities">
               <%for(int i = 0; i < cities.size(); i++) {%>
               <option>${cities[<%=i%>]}</option>
               <%}%>
        </select>

    o è possibile utilizzare azioni Standard se il corso è conforme a fagiolo convenzioni:

        <jsp:useBean id="exam" class="com.example.Exam" scope="pageScope"/>
        The value return by the method called harfTo: <jsp:getProperty name="exam" property="harfTo"/>

    Non dimenticate di importare i tag JSTL lib:

       <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix ="c" %>

    EDIT:

    Se si dispone di una collezione exams che contiene exam oggetti, quindi è possibile utilizzare JSTL per scorrere poi raccolta in questo modo:

     <c:forEach var="exam" items ="${exams}">
             ${exam.harfTo}
     </c:forEach>
    • esame di stato è un id di una tabella di visualizzazione che si ripete più di una raccolta di esame oggetto
  2. 0

    Per accedere al metodo, basta togliere la parte.

    ${exam.harfTo}

    Opere stesse se si desidera chiamare una classe metodo setter.

Lascia un commento