2012-01-25 9 views
21

È possibile eseguire un'istruzione if-then-else all'interno di un'espressione JSP?If-then-else all'interno di un'espressione JSP?

MODIFICA: In particolare, stavo cercando una soluzione JSP, non una soluzione JSTL. Ma alcune soluzioni JSTL riportate di seguito sono molto apprezzate e sono benvenute. Per favore, non votarmi per una domanda doppia perché è già stato chiesto a JSTL.

+2

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

+0

@Simon, stavo chiedendo per JSP non JSTL. (Non sono sicuro se sto usando la terminologia corretta.) – Xonatron

risposta

22

Se si utilizza JSTL, è possibile scegliere-quando-altrimenti.

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

Per ulteriori informazioni su JSTL provare here.

+0

Grazie per questo, ma stavo cercando una soluzione JSP non una soluzione JSTL. Alla fine non sono sicuro se sia importante o meno per il mio progetto, ma non ho ancora familiarità con JSTL. – Xonatron

+1

JSTL aggiunge molte funzionalità ... se stai facendo la tua interfaccia utente con JSP allora probabilmente varrebbe la pena guardare. È piuttosto semplice iniziare. – Michael

+0

Grazie per questo. Potrei doverlo esaminare. Sembra gestire anche l'escape delle stringhe basate sul Web. Sembra che sia progettato molto bene per le applicazioni web. Come ho detto, non l'ho mai usato, quindi questo è proprio quello che sembra. In realtà sono un po 'confuso tra JSP Scriptlets e JSP Expressions e JSTL. Mentre li uso tutti mi aspetto di ottenere una presa dello scopo e del luogo di ciascuno. Una scelta tra l'una e l'altra finora sembra essere per l'eleganza. Qual è lo scopo della mia domanda in realtà. – Xonatron

28

In JSP EL 2.0, è possibile farlo utilizzando l'operatore ternario. Per esempio:

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

Ciò che fa è controlla number variabile s' param di JSP. Se è 1, allora viene selezionato. altrimenti, niente.

+0

Mi piace. Ma non sono sicuro di cosa sia. Non è un'espressione JSP. Posso accedere alle variabili dal mio JSP Scriptlet qui? (Ci sto provando in questo momento e fallendo.) – Xonatron

+0

Il 'param' contiene tutte le variabili dallo scriptlet. 'param.number' accederà al valore del' numero'. –

+0

Ho un 'booleano pari' nel mio JSP Scriplet, ma' param.even' non sembra accedervi. 'even' passa da' true' a 'false' ogni riga, e quando uso' $ {param.even == true? 'even': 'odd'} 'o' $ {param.even? 'even': 'odd'} 'tutto quello che ottengo è' odd' per l'output più e più volte. – Xonatron

11

si può avvolgere il codice html con tag JSP come questo:

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

Anche a me piace questo. Questa è in realtà la mia soluzione attuale! Ma sta usando JSP Scriptlets, non JSP Expressions. Volevo solo la soluzione più elegante. – Xonatron

0

c'è un modo diverso, perché io uso Eclipse continuano a dirmi che non può risolvere una variabile che è venuta dalla servlet mentre di esecuzione che è al di sotto (PS: sono nuovo di JSP):

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

il risultato sarà come

testo da stampare < valore var qui > testo da stampare