2016-04-12 7 views
0

Ich versuche grundsätzlich, eine Arraylist an eine JSP-Seite zu senden, und eine if-Bedingung auf der Seite bestimmt, welcher Wert in einem Dropdown-Menü als 'ausgewählt' gesetzt werden soll.JSTL Wenn Bedingung in JSP nicht funktioniert Seite

Servlets:

public class FeatureServlet extends HttpServlet { 

    public void doGet(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 

     ArrayList<FeaturePermission> permList = new ArrayList<FeaturePermission>(); 

     FeaturePermission perm = new FeaturePermission(); 
     perm.setStatus("2"); 
     permList.add(perm); 

     request.setAttribute("perms", permList); 
     RequestDispatcher rd = getServletContext().getRequestDispatcher("/CheckData.jsp"); 
     rd.forward(request, response); 

    } 
} 

CheckData.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> 
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
<%@ page import="java.util.*" %> 
<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <title>Test Page</title> 
    </head> 
    <body> 
     <select id="check_status" name="check_status"> 
       <optgroup label="Choose Status"> 
        <option value="1" <c:if test="${perms[0].status == 1}"> <c:out value="selected=selected"></c:out></c:if>>1</option> 
        <option value="2" <c:if test="${perms[0].status == 2}"> <c:out value="selected=selected"></c:out></c:if>>2</option> 
       </optgroup> 
     </select> 
    </body> 
</html> 

FeaturePermission Klasse:

String ID = ""; 
String Status = ""; 

//Getter Setter & Constructors 

ich im Grunde ne Um zu überprüfen, ob der Wert im Parameter 'Status' gleich 1 ist, setzen Sie die ausgewählte Option für alle Optionen im Dropdown-Menü auf 1 usw.

Allerdings, wenn ich es ausführe, ist der richtige Wert nicht ausgewählt. Ist mein Code korrekt?

+0

Nein, jetzt wurde es ein leerer Wert. Es gibt nichts in der Auswahl-Tag, wenn ich es ausführen @josivan – Dinuka

+0

Können Sie erklären, wie das bitte funktioniert? Warum gibt es kein "Wenn" in diesem Code, das du mir gegeben hast? @josivan – Dinuka

Antwort

1

== und eq sind die gleichen für Zeichenfolge Vergleich in Ausdruck Sprache. aber Sie müssen '1' und '2' innerhalb ' Markierungen setzen. wie:

<option value="1" <c:if test="${perms[0].status == '1'}"> <c:out value="selected=selected"></c:out></c:if>>1</option> 
<option value="2" <c:if test="${perms[0].status == '2'}"> <c:out value="selected=selected"></c:out></c:if>>2</option> 

definieren auch status Feld mit s anstelle von S beginnen.

+0

Weil sie Saiten sind. Ich könnte manchmal ein Wort anstelle einer Nummer verwenden. – Dinuka

+0

Ja. Da sie 'string' sind, müssen Sie sie wie' perms [0] .status == '1'' testen. –

+0

Ich habe einen Fehler erhalten, als ich Ihre Änderung vorgenommen habe. Es wird in der Nähe des == "1" -Teils in rot unterstrichen, was zu einem Fehler führt: "" wurde erkannt, es wurde eines von folgenden erwartet: ... ... ... "true "..." false "..." null "..." ("..." - "..." nicht "..."! "..." leer "... ... – Dinuka