2010-06-02 110 views
1

我想这样的事情中的clientId:RichFaces的丰富:小面

<?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> 

我这里面临的问题是实际的客户端ID是我facelts 组件生成。有没有办法将ID传递给rich:clientId是这样的?如果不是这样的问题会怎么样呢?

在此先感谢!

回答

0

全部rich:clientId是否提供document.getElementById()并提供完整的ID。

所以不要用#{rich:clientId('#{id}Shevron')},只是使用document.getElementById('#{id}Shevron');并确保您指定完整的ID(即包含格式ID等)

3

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

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

所以,如果你的“ID”不是动态生成的,这将解决您的问题:

#{rich:clientId(id)} 

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

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

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

#{rich:clientId(myDynamicID)} 
+1

这是行不通的。感谢分享。 – feder 2013-08-23 05:12:36