2010-06-02 4 views
1

Я пытаюсь что-то вроде этого:RichFaces богатые: ClientId в Facelets

<?xml version="1.0"/> 
<ui:composition ....> 
    <h:inputText id="#{id}InputText" value="#{value}"/> 

    <rich:calendar id="#{id}Shevron" 
     popup="true" 
     datePattern="ddMMyy" 
     showInput="false" 
     todayControlMode="hidden" 
     enableManualInput="false" 
     showApplyButton="false" 
     updateDays="14" 
     ondateselected="alert('#{rich:clientId('#{id}Shevron')}');" 
     inputClass="xwingml-input"/> 
</ui:composition> 

Проблемы я столкнулся в том, что фактический идентификатор клиента генерируется для моего facelts компонентов. Есть ли способ передать идентификатор rich: clientId, как это? Если не так, как можно было бы решить эту проблему?

Заранее благодарю !.

ответ

0

Все rich:clientId делает это, чтобы визуализировать document.getElementById() и предоставить полный идентификатор.

Так что не использовать #{rich:clientId('#{id}Shevron')} и просто использовать document.getElementById('#{id}Shevron'); и убедитесь, что вы указываете полный идентификатор (например, в том числе формы ID и т.д.)

3

старый вопрос, но здесь я записываю свое решение в случае, если это помогает кто то.

Вы можете передать параметры JSTL-функциям без необходимости использования операторов оценки (# {} $ {}). Взгляните на это String length example.

Так что, если ваш «идентификатор» не динамически это решит вашу проблему:

#{rich:clientId(id)} 

Но в вашем случае вам необходимо определить дополнительную переменную для хранения динамического ID:

<c:set var="myDynamicID" value="${id}Shevron"/> 

И затем используйте его для получения клиентского интерфейса.

#{rich:clientId(myDynamicID)} 
+1

Это действительно работает. Спасибо, что поделился. – feder

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