условный блок if-else в visualforce

Я использовал теги c:if, c:when JSTL в jsp. Но я не знаю, доступно ли что-то подобное для страниц визуальной силы. просто, например, я предоставляю пример кода для 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.


person Plymouth Rock    schedule 06.04.2015    source источник


Ответы (4)


Я обнаружил, что мы можем использовать панель вывода (<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....
person Plymouth Rock    schedule 03.06.2015

Та же концепция, что и в других ответах здесь, но вы можете использовать атрибут rendered в 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>
person willard    schedule 08.04.2015

В visualforce вы можете использовать некоторые логические операторы и функции. Объяснение здесь

Вам нужен список «Логические функции», тот же код, который вы предоставляете, в VF должен выглядеть так:

{!IF(salary<=0, "Salary is very low to survive.", "No comment sir")} 
person nickzenko    schedule 06.04.2015
comment
Ok. В этом случае мой данный образец слишком прост, чтобы указать сложность, о которой я хотел упомянуть. Скажем, для условия я хочу показать набор данных в табличной форме. В противном случае, скажем, я бы напечатал абзац. Тогда что? Я хочу переключаться между блоками кода, содержащими множество html-тегов и значений и т. д. - person Plymouth Rock; 07.04.2015
comment
Для блоков кода переключателя можно использовать отображаемый атрибут ‹apex:outputPanel rendered={!salary‹=0}› ... ‹/apex:ouputPanel› ‹apex:outputPanel rendered={!salary›0}› ... ‹/ вершина: панель вывода› - person nickzenko; 07.04.2015

Вам нужно поместить логику в контроллер (где, по мнению большинства людей, она и должна быть). Ваш ВФ будет выглядеть так:

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

И в вашем контроллере определите свою логику в геттере:

public string bgColorVar{
    get{ 
        //logic
    }
    set;
}
person raffters    schedule 07.04.2015