2012-03-26 2 views
3
<apex:outputField rendered="{!(WidgetType.contains('mywidget1'))}" /> 

Когда я делаю это я получаю ошибку ...Использование String.contains в странице Apex

Error: Unknown function WidgetType.contains. Check spelling

... даже если WidgetType возвращает строку!

Это позволит мне сделать это, хотя ...

rendered="{!(WidgetType == 'mywidget1')}"

Вот это свойство в контроллере ...

public String getWidgetType() { 
    return Settings.getWidgetType(); 
} 

ответ

7

Отъезд CONTAINS функцию documentation (вставленный ниже).


Описание

Сравнивает два аргумента текста и возвращает TRUE, если первый аргумент содержит второй аргумент. Если нет, возвращается FALSE.

В следующем примере проверяется содержимое настраиваемого текстового поля Product_Type и возвращается «Parts» для любого продукта со словом «part». В противном случае он возвращает «Сервис». {!IF(contains(opportunity.Product_Type__c, "part"), "Parts", "Service")}

Эта функция чувствительна к регистру, поэтому убедитесь, что значение compare_text имеет правильную заглавную букву.

Использование

CONTAINS(text, compare_text) и заменить текст с текстом, который содержит значение compare_text.


В вашем случае, вам нужно будет использовать его как это:

<apex:outputField rendered="{!(CONTAINS(WidgetType,'mywidget1'))}" /> 
+2

Правильно. Вы не можете использовать APEX-методы (определенные пользователем или иным образом) на странице VF, но вы можете использовать функции (доступные для полей формулы). – barelyknown

+1

Кроме того, если вы хотите вызвать метод Apex из JavaScript, используйте apex: actionFunction. – Adam

+1

Или [JavaScript Remoting] (http://www.salesforce.com/us/developer/docs/pages/Content/pages_js_remoting.htm). :) –

0

<apex:outputPanel rendered="{!(contains('long_string','short_string_to_check'))}" />

Это работает для меня.

Смежные вопросы