我对在if语句中处理多个和/或语句感到困惑。我希望有人可以帮助我解决这个问题。Velocity参考指南似乎没有解决我想要做的事情。
我正在使用将要使用公共字段的应用程序。我必须使用名称映射公共字段中的ID。我的if语句有两个部分。我首先有一个OR操作数来处理一个字段的两个值。然后,我还有另一个必须结合AND语句的组件。
这是我目前拥有的:
#if ($!myid == '21' && $!mytechno == 161)
<B>Technologist:</B> $!MytechData<BR><BR>
<B>Tech2</B> John Smith
#elseif ($!myid == '21' && $!mytechno == 162)
<B>Technologist:</B> $!MytechData<BR><BR>
<B>Tech2</B> Mickey Mouse
#elseif ($!myid == '21' && $!mytechno == 164)
<B>Technologist:</B> $!MytechData<BR><BR>
<B>Tech2</B> Jean Jones)
#else<B>Technologist:</B> $!MytechData
#end
#end
Run Code Online (Sandbox Code Playgroud)
因此,到目前为止,此操作正常。基本上,我正在检查myID的值,并确保必须存在mytechno。这样,它将填充我正在引用的Tech2字段。
尽管这一切都很好,但我需要添加另一个myid值。假设myID的值为10。
#if ($!myid == '21' || $myid='10' && $!mytechno == 161)
<B>Technologist:</B> $!MytechData<BR><BR>
<B>Tech2</B> John Smith
#elseif ($!myid == '21' || $myid='10' && $!mytechno == 162)
<B>Technologist:</B> $!MytechData<BR><BR>
<B>Tech2</B> Mickey Mouse
#elseif ($!myid == '21 || $myid='10'' && $!mytechno == 164)
<B>Technologist:</B> $!MytechData<BR><BR>
<B>Tech2</B> Jean Jones)
#else<B>Technologist:</B> $!MytechData
#end
#end
Run Code Online (Sandbox Code Playgroud)
在这种情况下发生的事情是,它会检查第一条语句并假定它是正确的,因为myID与我正在使用的数据匹配。因此,如果mytechno为164,则显示“ John Smith”。逻辑无法检查mytechno字段。
我也试过了
#if ($!myid == '21' || $myid='10') && ($!mytechno == 161)
<B>Technologist:</B> $!MytechData<BR><BR>
<B>Tech2</B> John Smith
#elseif ($!myid == '21' || $myid='10') && ($!mytechno == 162)
<B>Technologist:</B> $!MytechData<BR><BR>
<B>Tech2</B> Mickey Mouse
#elseif ($!myid == '21 || $myid='10'') && ($!mytechno == 164)
<B>Technologist:</B> $!MytechData<BR><BR>
<B>Tech2</B> Jean Jones)
#else<B>Technologist:</B> $!MytechData
#end
#end
Run Code Online (Sandbox Code Playgroud)
那也不起作用。谁能提供任何建议?综上所述,它应该是一个OR语句,再加上一个AND语句。如果这是SQL,我可以轻松地做到这一点,只是不确定Velocity
我想我发现了这一点。所以这就是我所做的
#if (($!myid == '21' || $myid='10') && ($!mytechno == 161)
<B>Technologist:</B> $!MytechData<BR><BR>
<B>Tech2</B> John Smith
#elseif (($!myid == '21' || $myid='10') && ($!mytechno == 162)
<B>Technologist:</B> $!MytechData<BR><BR>
<B>Tech2</B> Mickey Mouse
#elseif (($!myid == '21 || $myid='10'') && ($!mytechno == 164)
<B>Technologist:</B> $!MytechData<BR><BR>
<B>Tech2</B> Jean Jones
#else<B>Technologist:</B> $!MytechData
#end
#end
Run Code Online (Sandbox Code Playgroud)
我仍然需要进一步测试。但似乎我必须加上一组额外的括号。
编辑:我必须在末尾删除多余的括号。否则,多余的括号将显示在应用程序本身上。不知道为什么我必须删除它,因为我以为在封装数据时必须加上一组括号。至少这就是SQL的工作方式。