【问题标题】:if statement in JSTLJSTL 中的 if 语句
【发布时间】:2014-12-23 21:39:57
【问题描述】:

我想在 JSTL 中做一个 if 语句。这是我想做的:

<c:set var="sex" value="${param.sex}"/>

 <c:if test="$(param.sex=='male')" >
     //set the sex to zero
 </c:if>
 <c:if test="$(param.sex=='female')" >
     //set the sex to one
 </c:if>

然后像这样在 where 子句中使用性别

<sql:query dataSource="${dbcon}" var="result">
 select firstname,lastname from members where sex = ?
 <sql:param value="${sex}"></sql:param>

【问题讨论】:

  • 继续,什么停止了?忘了问?
  • 你的问题是什么?
  • @almasshaikh 我不知道正确的语法
  • 我觉得没问题。您认为哪种语法不正确?你试过跑步并有任何异常吗?基本上不做代码审查。

标签: java oracle jsp jstl


【解决方案1】:

如果条件使用增强会更容易

【讨论】:

    【解决方案2】:

    如果您没有在除 sql:query 之外的任何其他地方使用 ${sex} 变量,则无需执行零/一位。您的问题可能从以下方面崩溃:

    <c:set var="sex" value="${param.sex}"/>
    
    <c:if test="$(param.sex=='male')" >
        //set the sex to zero
    </c:if>
    <c:if test="$(param.sex=='female')" >
       //set the sex to one
    </c:if>
    ...
    <sql:query dataSource="${dbcon}" var="result">
        select firstname,lastname from members where sex = ?
        <sql:param value="${sex}">
    </sql:param>
    

    简单来说:

    <sql:query dataSource="${dbcon}" var="result">
        select firstname,lastname from members where sex = ?
        <sql:param value="${param.sex == 'male' ? 0 : 1}">
    </sql:param>
    

    重点是你可以直接在sql:query语句中使用param.sex,在这种情况下你可以使用“三元运算符”而不是使用if语句。

    Google 了解更多关于“JSTL 三元运算符”的信息或查看此处(向下滚动到三元运算符):http://davidensinger.com/2014/07/fun-with-jstl-in-jsps/


    更新

    要查看正在运行的三元运算符并确保 param.sex 值是您期望的值,您只需键入以下内容:

    ${param.sex == 'male' ? 0 : 1}
    

    在空白行上,它应该在屏幕上打印 0 或 1。

    【讨论】:

    • 当然,您收到错误消息了吗?我将更新答案,向您展示三元运算符的工作原理。
    【解决方案3】:

    select firstname,lastname from members where sex = 中输入假定为性别的变量名

    【讨论】:

      猜你喜欢
      • 2010-12-09
      • 1970-01-01
      • 2021-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-01
      • 1970-01-01
      相关资源
      最近更新 更多