Jsf 如何使用两个组合查找ajax渲染的ID?

Jsf 如何使用两个组合查找ajax渲染的ID?,jsf,jsf-2,composite-component,ajax-update,Jsf,Jsf 2,Composite Component,Ajax Update,我有两个合成,当我更改汽车名称时,我需要在第二个合成中渲染字段,但显示此错误: <f:ajax> contains an unknown id 'nameCli' - cannot locate it in the context of the component nameCar. 如果我改变主意 <f:ajax listener="#{cc.attrs.clear}" event="change" render="nameCli ageCli" /> 复合材料也在命

我有两个合成,当我更改汽车名称时,我需要在第二个合成中渲染字段,但显示此错误:

<f:ajax> contains an unknown id 'nameCli' - cannot locate it in the context of the component nameCar.
如果我改变主意

<f:ajax listener="#{cc.attrs.clear}" event="change" render="nameCli ageCli" />

复合材料也在命名容器。请参阅副本。也就是说,你高估了复合材料的价值。最好将标记文件用于此构造。另请参见复合材料也是命名容器。请参阅副本。也就是说,你高估了复合材料的价值。最好将标记文件用于此构造。另见
<composite:interface>
    <composite:attribute name="id" required="true" type="java.lang.String" />
    <composite:attribute name="nameCli" />
    <composite:attribute name="ageCli" />
</composite:interface>  

<composite:implementation>
    <label>Client's Name:</label>
    <h:inputText id="nameCli" value="#{cc.attrs.nameCli}" />
    <label>Age:</label>
    <h:inputText id="ageCli" value="#{cc.attrs.ageCli}" />
</composite:implementation>
<proj:car id="car" nameCar="#{beanController.car.name}" clear="#{beanController.clear}" />
<proj:client id="client" nameCli="#{beanController.client.name}" ageCli="#{beanController.client.age}" />
private Car car;
private Client client;

public String clear() {
    client.setName(null);
    client.setAge(null);
    return null;
}

//getters and setters
<f:ajax listener="#{cc.attrs.clear}" event="change" render="nameCli ageCli" />
<f:ajax listener="#{cc.attrs.clear}" event="change" render=":client:nameCli :client:ageCli" />
<f:ajax listener="#{cc.attrs.clear}" event="change" />
public String clear() {
    client.setName(null);
    client.setAge(null);

    // Get the fields
    UIInput uiNameCli = (UIInput) FacesContext.getCurrentInstance().getViewRoot().findComponent("myForm:client:nameCli");
    UIInput uiAgeCli = (UIInput) FacesContext.getCurrentInstance().getViewRoot().findComponent("myForm:client:ageCli");

    FacesContext context = FacesContext.getCurrentInstance(); // Update the fields.
    context.getPartialViewContext().getRenderIds().add(uiNameCli.getClientId(context));
    context.getPartialViewContext().getRenderIds().add(uiAgeCli.getClientId(context));

    return null;
}