2012-01-25 2 views
21

Можете ли вы сделать инструкцию if-then-else внутри выражения JSP?If-then-else внутри выражения JSP?

EDIT: В частности, я искал решение JSP, а не решение JSTL. Но некоторые решения JSTL ниже высоко оценены и очень приветствуются. Просто, пожалуйста, не проголосуйте меня за дублированный вопрос, потому что нас уже спрашивали о JSTL.

+2

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

+0

@Simon, я просил JSP не JSTL. (Я не уверен, использую ли я правильную терминологию.) – Xonatron

ответ

22

Если вы используете JSTL, вы можете выбрать-когда-иначе.

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

Для получения дополнительной информации о JSTL попробовать here.

+0

Спасибо за это, но я искал решение JSP, а не решение JSTL. Я в конечном счете не уверен, имеет ли это значение или нет для моего проекта, но я еще не знаком с JSTL. – Xonatron

+1

JSTL добавляет много функциональности ... если вы делаете свой интерфейс с JSP, то, вероятно, стоит посмотреть. С этим очень легко начать. – Michael

+0

Спасибо за это. Возможно, мне придется заглянуть в нее. Похоже, что он легко справляется с экранированием веб-строк. Похоже, он очень хорошо разработан для веб-приложений. Как я уже сказал, я никогда не использовал его, так что это именно то, что кажется. На самом деле я немного смущен между JSP Scriptlets и JSP Expressions и JSTL. Поскольку я использую их все, я ожидаю, что вы поймете цель и место каждого из них. Выбор между одним и другим пока представляется для элегантности. Какова цель моего вопроса на самом деле. – Xonatron

28

В JSP EL 2.0 вы можете сделать это с помощью тернарного оператора. Например:

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

Что она делает это он проверяет переменную number JSP в param «s. Если это 1, то выбранный будет заменен. иначе ничего.

+0

Мне это нравится. Но я не уверен, что это такое. Это не JSP-выражение. Могу ли я получить доступ к переменным из моего JSP Scriptlet? (Я сейчас пытаюсь и не могу.) – Xonatron

+0

'param 'содержит все переменные из скриптлета. 'param.number' просто получит доступ к значению' number'. –

+0

У меня есть 'boolean even' в моем JSP Scriplet, но' param.even', похоже, не имеет к нему доступа. 'even' переключается с' true' на 'false' каждой строки, и когда я использую' $ {param.even == true? 'even': 'odd'} 'или' $ {param.even? 'even': 'odd'} 'все, что я получаю, является' odd' для вывода снова и снова. – Xonatron

11

Вы можете обернуть свой HTML код с тегами JSP, как это:

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

Мне это тоже нравится. Это на самом деле мое текущее решение! Но он использует JSP Scriptlets, а не JSP Expressions. Я просто хотел самого элегантного решения. – Xonatron

0

есть другой способ, я использую, потому что Eclipse, продолжают говорить мне, что он не может разрешить переменную, которая исходит из сервлета время выполнение которых ниже (PS: Я новичок в JSP):

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

результат будет как

текст для печати < var значение здесь > текст для печати

Смежные вопросы