我有一个开放式的问题..
我想要一个基于条件的HTML代码(桌面/ ipad)..说条件1 /条件2
我想为每个条件都有单独的HTML代码段......
if (Condition 1)
Some HTML code for con1
else if (Condition 2)
Some HTML code for con2
我想测试的条件(在JS中)是;
var isiPad = navigator.userAgent.match(/iPad/i) != null;
if (isiPad)
{}
else
{}
现在必须在.jsp页面中实现...
那我该怎么做?我应该使用JSTL吗? 什么是最好的方式?
主要的是,实际上只应加载/呈现相应的代码 例如如果条件1为真,则条件2中的HTML代码根本不应执行(除了隐藏在浏览器中)
答案 0 :(得分:506)
我应该使用JSTL吗?
是
您可以使用<c:if>
和<c:choose>
标记在jsp中使用JSTL进行条件渲染。
要模拟 if ,您可以使用:
<c:if test="condition"></c:if>
要模拟 if ... else ,您可以使用:
<c:choose>
<c:when test="${param.enter=='1'}">
pizza.
<br />
</c:when>
<c:otherwise>
pizzas.
<br />
</c:otherwise>
</c:choose>
答案 1 :(得分:165)
如果您只想输出不同的文字,那么更简洁的例子就是
${condition ? "some text when true" : "some text when false"}
比 c短:选择。
答案 2 :(得分:98)
这个结构是:
<c:choose>
<c:when test="${..}">...</c:when> <!-- if condition -->
<c:when test="${..}">...</c:when> <!-- else if condition -->
<c:otherwise>...</c:otherwise> <!-- else condition -->
</c:choose>
如果条件不贵,我有时更喜欢使用两个不同的<c:if
标签 - 这样可以更容易阅读。
答案 3 :(得分:10)
如果您想比较字符串,请编写以下JSTL:
<c:choose>
<c:when test="${myvar.equals('foo')}">
...
</c:when>
<c:when test="${myvar.equals('bar')}">
...
</c:when>
<c:otherwise>
...
</c:otherwise>
</c:choose>
答案 4 :(得分:10)
<%@ taglib prefix='c' uri='http://java.sun.com/jsp/jstl/core' %>
<c:set var="val" value="5"/>
<c:choose>
<c:when test="${val == '5'}">
Value is 5
</c:when>
<c:otherwise>
Value is not 5
</c:otherwise>
</c:choose>
答案 5 :(得分:2)
<%@ taglib prefix='c' uri='http://java.sun.com/jsp/jstl/core' %>
<c:set var="isiPad" value="value"/>
<c:choose>
<!-- if condition -->
<c:when test="${...}">Html Code</c:when>
<!-- else condition -->
<c:otherwise>Html code</c:otherwise>
</c:choose>
答案 6 :(得分:2)
简单方法:
<c:if test="${condition}">
//if
</c:if>
<c:if test="${!condition}">
//else
</c:if>
答案 7 :(得分:1)
您可以在<% %>
之外的jsp页面和html代码中的<% %>
内编写if-else条件
例如:
<%
String username = (String)session.getAttribute("username");
if(username==null) {
%>
<p> username is null</p> //html code
<%
} else {
%>
<p> username is not null</p> //html code
<%
}
%>
答案 8 :(得分:1)
<c:if test="${any_cond}" var="condition">
//if part
</c:if>
<c:if test="${!condition}">
//else part
</c:if>
答案 9 :(得分:0)
我遇到了同样的问题,我认为您不能在如果条件下在JSTL中使用Javascript。
一种解决方法可能是在Javascript中:
<script>
var isiPad = navigator.userAgent.match(/iPad/i) != null;
if (isiPad) {
document.write("Some HTML code for con1");
} else {
document.write("Some HTML code for con2");
}
</script>
您必须将此脚本放置在要编写的html代码的位置。
答案 10 :(得分:-1)
如果您想使用JSTL Tag Libe执行以下操作,请按照以下步骤操作:
[要求]如果数字大于等于40且小于50,则显示&#34;以4&#34开头的两位数字;否则&#34;其他数字&#34;。
[解决方案]
1. Please Add the JSTL tag lib on the top of the page.`
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>`
2. Please Write the following code
`
<c:choose>
<c:when test="${params.number >=40 && params.number <50}">
<p> Two digit number starting with 4. </p>
</c:when>
<c:otherwise>
<p> Other numbers. </p>
</c:otherwise>
</c:choose>`
答案 11 :(得分:-1)
如果要比较字符串,请编写以下JSTL:
<c:choose>
<c:when test="${myvar.equals('foo')}">
...
</c:when>
<c:when test="${myvar.equals('bar')}">
...
</c:when>
<c:otherwise>
...
</c:otherwise>
</c:choose>
答案 12 :(得分:-1)
<c:choose>
<c:when test="${not empty userid and userid ne null}">
<sql:query dataSource="${dbsource}" var="usersql">
SELECT * FROM newuser WHERE ID = ?;
<sql:param value="${param.userid}" />
</sql:query>
</c:when>
<c:otherwise >
<sql:query dataSource="${dbsource}" var="usersql">
SELECT * FROM newuser WHERE username = ?;
<sql:param value="${param.username}" />
</sql:query>
</c:otherwise>