2
我neet在複合組件中獲取特定的父組件ID。我只知道如何獲得整個ID鏈,就像我在標題中寫的:#{cc.clientId}
。它提供(我不知道他們是怎麼稱呼的)Id1:Id2:Id3
,但我只需要Id1
,我怎麼能得到它?如何從#{cc.clientId}中提取第一個組件ID?
我neet在複合組件中獲取特定的父組件ID。我只知道如何獲得整個ID鏈,就像我在標題中寫的:#{cc.clientId}
。它提供(我不知道他們是怎麼稱呼的)Id1:Id2:Id3
,但我只需要Id1
,我怎麼能得到它?如何從#{cc.clientId}中提取第一個組件ID?
您可以使用the fn:split()
function此:
xmlns:fn="http://java.sun.com/jsp/jstl/functions"
...
#{fn:split(cc.clientId, ':')[0]}
另一種方法是在使用UIComponent#getNamingContainer()
的UIComponent#getParent()
:
#{cc.parent.namingContainer.parent.namingContainer.clientId}
有可能是根據具體的功能需求和你的代碼更好的方法到目前爲止,在你的問題中都沒有。例如,如果Id1
實際上是指<h:form>
,則可以使用render="@form"
代替<f:ajax>
。
Id1:Id2:Id3
就像客戶端ID一樣(正如您在生成的HTML輸出中看到的那樣)。 Id1
部分實際上是組件ID(如您在JSF源代碼中看到的那樣)。在Id1:Id2:Id3
中,客戶ID中的NamingContainer
ID的預先配置有時也稱爲woodstocking。