Apache Velocity在IF语句中组合多个AND / OR

时间:2014-09-04 14:41:38

标签: velocity

我在if语句中处理多个和/或语句时有点难过。我希望有人可以帮我解决这个问题。 Velocity参考指南似乎没有解决我想要做的事情。

我正在使用我将使用公共字段的应用程序。我必须使用名称来映射公共字段中的ID。我的if语句有两个组件。我有一个OR操作数处理一个字段的两个值。然后我有另一个组件来组合AND语句。

以下是我目前的情况:

      #if ($!myid == '21' && $!mytechno == 161)
      <B>Technologist:</B>&nbsp;$!MytechData<BR><BR>
      <B>Tech2</B>&nbsp;John Smith
      #elseif ($!myid == '21' && $!mytechno == 162)
      <B>Technologist:</B>&nbsp;$!MytechData<BR><BR>
      <B>Tech2</B>&nbsp;Mickey Mouse
      #elseif ($!myid == '21' && $!mytechno == 164)
      <B>Technologist:</B>&nbsp;$!MytechData<BR><BR>
      <B>Tech2</B>&nbsp;Jean Jones)
      #else<B>Technologist:</B>&nbsp;$!MytechData

      #end
      #end

#if ($!myid == '21' && $!mytechno == 161) <B>Technologist:</B>&nbsp;$!MytechData<BR><BR> <B>Tech2</B>&nbsp;John Smith #elseif ($!myid == '21' && $!mytechno == 162) <B>Technologist:</B>&nbsp;$!MytechData<BR><BR> <B>Tech2</B>&nbsp;Mickey Mouse #elseif ($!myid == '21' && $!mytechno == 164) <B>Technologist:</B>&nbsp;$!MytechData<BR><BR> <B>Tech2</B>&nbsp;Jean Jones) #else<B>Technologist:</B>&nbsp;$!MytechData #end #end

到目前为止,这是正常的。基本上我正在检查myID的值并确保mytechno必须存在。这样,它将填充我引用的Tech2字段。

虽然这一切都很好,但我需要添加另一个myid值。让我们说myID值是10.我试过这个

在这种情况下会发生的事情是它检查第一个语句并假设它是真的,因为myID与我正在使用的数据匹配。所以,如果mytechno是164,它会显示&#34; John Smith&#34;逻辑无法检查mytechno字段。

我也试过这个

    #if ($!myid == '21' || $myid='10' && $!mytechno == 161)
      <B>Technologist:</B>&nbsp;$!MytechData<BR><BR>
      <B>Tech2</B>&nbsp;John Smith
      #elseif ($!myid == '21' || $myid='10' && $!mytechno == 162)
      <B>Technologist:</B>&nbsp;$!MytechData<BR><BR>
      <B>Tech2</B>&nbsp;Mickey Mouse
      #elseif ($!myid == '21 || $myid='10'' && $!mytechno == 164)
      <B>Technologist:</B>&nbsp;$!MytechData<BR><BR>
      <B>Tech2</B>&nbsp;Jean Jones)
      #else<B>Technologist:</B>&nbsp;$!MytechData

      #end
      #end

那也没有用。有人可以提供任何建议吗?总而言之,它应该是一个结合AND语句的OR语句。如果这是SQL我可以很容易地做到这一点,只是不确定Velocity

1 个答案:

答案 0 :(得分:5)

我想我发现了这一点。所以这就是我做的事情

      #if (($!myid == '21' || $myid='10') && ($!mytechno == 161)
      <B>Technologist:</B>&nbsp;$!MytechData<BR><BR>
      <B>Tech2</B>&nbsp;John Smith
      #elseif (($!myid == '21' || $myid='10') && ($!mytechno == 162)
      <B>Technologist:</B>&nbsp;$!MytechData<BR><BR>
      <B>Tech2</B>&nbsp;Mickey Mouse
      #elseif (($!myid == '21 || $myid='10'') && ($!mytechno == 164)
      <B>Technologist:</B>&nbsp;$!MytechData<BR><BR>
      <B>Tech2</B>&nbsp;Jean Jones
      #else<B>Technologist:</B>&nbsp;$!MytechData

      #end
      #end

我还需要进一步测试。但看起来我不得不包括一组额外的括号。

编辑:我不得不在最后拿出那个额外的括号。否则,应用程序本身会显示额外的括号。不知道为什么我必须删除它,因为我认为在封闭数据时必须添加一组额外的括号。至少这是它如何与SQL一起使用。