2010-01-20 4 views
3

각 셀 클릭이 componentControl 태그를 사용하여 툴팁을 여는 테이블이 있습니다. 그러나 저는 표 셀마다 다른 툴팁에 매개 변수를 전달하려고했습니다.서식있는 도구 설명 구성 요소 제어 매개 변수

<rich:toolTip id="tooltip" attached="false" mode="ajax"> 
<ui:include id="projectDetailInclude" src="projectDetail.xhtml"> 
    <ui:param name="projectDetail" value="#{projectBean.getProjectDetail(project, index)}" /> 
</ui:include> 
</rich:toolTip> 
<rich:dataTable id="detailDataTable" var="row" value="#{projectBean.projects}"> 
<rich:column id="rowLabelColumn"> 
    <h:outputText value="#{row.label}" /> 
</rich:column> 
<rich:columns id="detailColumns" var="column" value="#{projectBean.columns}" index="index" > 
    <f:facet name="header"> 
    <h:outputText value="#{column}" /> 
    </f:facet> 
    <div id="projectDetailBlock" class="#{row.values[index]}"> 
    <rich:componentControl event="onclick" for="tooltip" operation="show"> 
    <f:param name="project" value="#{project}" /> 
    <f:param name="index" value="#{index}" /> 
    </rich:componentControl> 
    </div> 
</rich:columns> 
</rich:dataTable> 

위의 코드에서 프로젝트와 색인 매개 변수를 전달하려고합니다. 내가 얻은 것은 좋은 스택 추적이다. (componentControl 태그에서 params를 제거하면 사라집니다).

java.lang.StackOverflowError 
java.lang.reflect.InvocationTargetException.<init>(InvocationTargetException.java:54) 
sun.reflect.GeneratedMethodAccessor208.invoke(Unknown Source) 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
java.lang.reflect.Method.invoke(Method.java:597) 
org.apache.commons.beanutils.PropertyUtilsBean.invokeMethod(PropertyUtilsBean.java:1773) 
org.apache.commons.beanutils.PropertyUtilsBean.getSimpleProperty(PropertyUtilsBean.java:1132) 
org.apache.commons.beanutils.PropertyUtilsBean.getNestedProperty(PropertyUtilsBean.java:686) 
org.apache.commons.beanutils.PropertyUtilsBean.getProperty(PropertyUtilsBean.java:715) 
org.apache.commons.beanutils.PropertyUtils.getProperty(PropertyUtils.java:290) 
org.ajax4jsf.javascript.ScriptUtils.writeScriptToStream(ScriptUtils.java:168) 
org.ajax4jsf.javascript.ScriptUtils.writeScriptToStream(ScriptUtils.java:174) 
org.ajax4jsf.javascript.ScriptUtils.writeScriptToStream(ScriptUtils.java:83) 
+0

은 datatable var 클래스의 index 속성입니까? – besc

답변

0

유사한 경우가 RichFaces에 덮여 예를 보여주는 때문에 작동한다 : http://showcase.richfaces.org/richfaces/component-sample.jsf?demo=componentControl

그러나 컴포넌트 제어의 대상이 tooltip.js 성분 JS의 show 방법이다. show 메서드에서 사용하는 유일한 매개 변수는 이벤트 매개 변수이므로 f:param은 사용자가 생각하는대로 수행하지 않습니다.

구성 요소 컨트롤에 매개 변수가 필요하지 않은 경우 ui:paramvalue 특성에있는 EL을 각 행에 대해 올바르게 계산해야합니다. 위의 코드를 f:param s없이 시도하면 어떻게됩니까?