2012-01-25 18 views
21

Czy można wykonać instrukcję if-then-else w wyrażeniu JSP?If-then-else w wyrażeniu JSP?

EDIT: W szczególności szukałem rozwiązania JSP, a nie JSTL. Jednak niektóre z poniższych rozwiązań JSTL są wysoko oceniane i są bardzo mile widziane. Tylko proszę nie głosujcie na mnie za duplikat, ponieważ ktoś już zapytał o JSTL.

+2

Tak. http://stackoverflow.com/questions/4587397/how-to-use-if-else-option-in-jstl –

+0

@Simon, pytałem o JSP, a nie JSTL. (Nie jestem pewien, czy używam właściwej terminologii.) – Xonatron

Odpowiedz

22

Jeśli korzystasz z JSTL, możesz wybrać opcję, kiedy, w przeciwnym razie.

<c:choose> 
    <c:when test="condition"></c:when> 
    <c:when test="condition2"></c:when> 
    <c:otherwise></c:otherwise> 
</c:choose> 

Aby uzyskać więcej informacji na temat JSTL, wypróbuj here.

+0

Dziękuję za to, ale szukałem rozwiązania JSP, a nie JSTL. W końcu nie jestem pewien, czy ma to znaczenie dla mojego projektu, ale nie jestem jeszcze zaznajomiony z JSTL. – Xonatron

+1

JSTL dodaje wiele funkcji ... jeśli robisz swój interfejs z JSPs, to prawdopodobnie warto byłoby na nie patrzeć. Zaczyna się to bardzo proste. – Michael

+0

Dzięki za to. Być może będę musiał się w to zagłębić. Wygląda na to, że łatwo obsługuje również wychodzące z sieci ciągi. Wygląda na to, że został zaprojektowany bardzo dobrze dla aplikacji internetowych. Tak jak powiedziałem, nigdy go nie używałem, więc tak właśnie wygląda. W rzeczywistości jestem nieco zdezorientowany między JSP Scriptlets a JSP Expressions i JSTL. Kiedy używam ich wszystkich, spodziewam się uchwycić cel i miejsce każdego z nich. Jak dotąd wybór między jednym a drugim wydaje się być dla elegancji. Jaki jest cel mojego pytania. – Xonatron

28

W JSP EL 2.0 można to zrobić za pomocą operatora trójskładnikowego. Na przykład:

<option value="1" ${param.number == 1 ? 'selected' : ''}>First option</option> 

co robi to sprawdza number zmienną param „s JSP. Jeśli jest to 1, zaznaczenie zostaje zastąpione. inaczej nic.

+0

Podoba mi się to. Ale nie jestem pewien co to jest. To nie jest wyrażenie JSP. Czy mogę uzyskać dostęp do zmiennych z mojego skryptu JSP tutaj? (Próbuję teraz i nie.) – Xonatron

+0

"Parametr" zawiera wszystkie zmienne ze skryptletu. 'param.number' po prostu uzyska dostęp do wartości' number'. –

+0

Mam 'boolean even' w moim JSP Scriplet, ale' param.even' wydaje się nie mieć do niego dostępu. 'even' przełącza z' true' na 'false' w każdym wierszu i kiedy używam' $ {param.even == true? "even": "odd"} 'lub' $ {param.even? 'even': 'odd'} 'wszystko, co otrzymuję, jest' nieparzyste' dla danych wyjściowych w kółko. – Xonatron

11

Można owinąć kod HTML z JSP tagów tak:

<% if (condition) { %> 
<div>Condition is true!</div> 
<% } else { %> 
<div>Condition is false</div> 
<% } %> 
+0

Też to lubię. To jest faktycznie moje obecne rozwiązanie! Ale używa Skryptów JSP, a nie JSP Expressions. Chciałem tylko najbardziej eleganckiego rozwiązania. – Xonatron

0

istnieje inny sposób, ponieważ używam Eclipse powtarzają mi, że nie może rozwiązać zmienną, która przychodzi od chwili serwletu wykonującego, który znajduje się poniżej (PS: Jestem nowym JSP):

${if(var != null)"text to print"} 
${if(var != null)var} to print a variable 
${if(var != null)"text to print"} 

wynik będzie podobny

tekst wydrukować < wartość zmiennej tutaj > tekst do wydrukowania