RichFaces rich:faceI中的clientId

时间:2010-06-02 10:55:04

标签: richfaces 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生成了实际的客户端ID 组件。有没有办法将id传递给rich:clientId是这样的?如果不是如何处理这种问题?

提前致谢!

2 个答案:

答案 0 :(得分:3)

一个老问题,但在这里我写下我的解决方案,以防它帮助某人。

您可以将参数传递给JSTL函数,而无需评估运算符(#{} $ {})。看一下这个String length example

因此,如果您的“id”未动态生成,则可以解决您的问题:

#{rich:clientId(id)}

但在您的情况下,您需要定义一个额外的变量来存储您的动态ID:

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

然后使用它来获取客户端UI。

#{rich:clientId(myDynamicID)}

答案 1 :(得分:0)

所有rich:clientId用于呈现document.getElementById()并提供完整ID。

所以不要使用#{rich:clientId('#{id}Shevron')}并且只使用document.getElementById('#{id}Shevron');并确保指定完整的ID(即包括表单ID等)