visualforce 中的 if-else 条件块

if-else conditional block in visualforce

我在 jsp 中使用了 c:if、c:when JSTL 标签。但我不知道视觉力页面是否有类似的东西。例如,我正在为 jsp 提供示例代码。 --

    <h1>A Demo conditional section code</h1>
    <c:choose>
       <c:when test="${param.colorField == 'red'}">
         <table border="0" width="150" height="50" bgcolor="#ff0000">
           <tr><td>It is red</td></tr>
         </table>
      </c:when>
      <c:when test="${param.colorField == 'blue'}">
       <table border="0" width="150" height="50" bgcolor="#0000ff">
         <tr><td>It is blue</td></tr>
      </table>
    </c:when>
    <c:when test="${param.colorField == 'green'}">
        <table border="0" width="150" height="50" bgcolor="#00ff00">
          <tr><td>Green table</td></tr>
        </table>
    </c:when>
    <c:otherwise>
      <table border="0" width="150" height="50" bgcolor="#000000">
        <tr><td>No colour changed</td></tr>
       </table>
    </c:otherwise>
</c:choose>
<br/>
and other codes....

我在 vf 页面中缺少这种页面块准备。

在 visualforce 中,您可以使用一些逻辑运算符和函数。 Explanation here

您需要 "Logical Functions" 列表,与您提供的代码相同,在 VF 中必须如下所示:

{!IF(salary<=0, "Salary is very low to survive.", "No comment sir")} 

您需要将逻辑放在控制器中(大多数人都说它属于控制器)。你的 VF 看起来像:

<table border="0" width="150" height="50" bgcolor="{!bgColorVar}">

然后在您的控制器中,在 getter:

中定义您的逻辑
public string bgColorVar{
    get{ 
        //logic
    }
    set;
}

与此处其他答案的概念相同,但您可以使用 PageBlock 上的渲染属性来渲染或不渲染该块:

<apex:pageBlock rendered="{!object.Color == 'red'}">
    it is red
</apex:pageBlock>
<apex:pageBlock rendered="{!object.Color == 'blue'}">
    it is blue
</apex:pageBlock>
<apex:pageBlock rendered="{!object.Color == 'green'}">
    it is green
</apex:pageBlock>

我发现我们可以对任何块使用输出面板 (<apex:outputpanel>) 并使用 rendered 属性来处理加载它的条件。

<h1>A Demo conditional section code</h1>
    <apex:outputpanel rendered="{!param.colorField == 'red'}">
         <table border="0" width="150" height="50" bgcolor="#ff0000">
           <tr><td>It is red</td></tr>
         </table>
    </apex:outputpanel>
    <apex:outputpanel rendered="{!param.colorField == 'blue'}">
       <table border="0" width="150" height="50" bgcolor="#0000ff">
         <tr><td>It is blue</td></tr>
      </table>
    </apex:outputpanel>
    :
    :
and other codes....