2012-01-19 2 views
1
<p:outputPanel> 
    <h:selectOneRadio value="#{myBean.favColor1}"> 
    <f:selectItem itemValue="Red" itemLabel="Color1 - Red" /> 
    <f:selectItem itemValue="Green" itemLabel="Color1 - Green" /> 
    <f:selectItem itemValue="Blue" itemLabel="Color1 - Blue" /> 
    </h:selectOneRadio> 
    <p:ajax update="picker,#{myBean.clientId}"/> 
</p:outputPanel> 

Мне нужно обновить компонент, чей идентификатор сгенерирован программно.Как обновить идентификатор, сгенерированный из бэк-компонента

ответ

2

Идентификатор клиента должен быть с префиксом по умолчанию контейнер именования разделителя : так, что она будет решена абсолютной к UIViewRoot вместо того, чтобы по отношению к именованию контейнера родительского (который будет работать для идентификаторов компонентов, но не для идентификаторов клиентов) ,

<p:ajax update="picker,:#{myBean.clientId}"/> 

Как совершенно другой альтернативы (я нахожу связывании идентификатор клиента для бэк-боба довольно зудящей), просто связать компонент с точки зрения и ссылаться на него, а не через посредника управляемый компонент.

<h:someComponent binding="#{foo}" /> 
... 

<p:ajax update="picker,:#{foo.clientId}"/> 
+0

Спасибо, работает отлично, но нарушает другие компоненты автозаполнения. Мне нужно это понять. – Ravi

+0

Добро пожаловать. Да, это совершенно другая проблема. Не стесняйтесь задавать новый вопрос, если вы stucks. – BalusC

+0

BalusC, я смешал два ваших ответа на этот вопрос [http://stackoverflow.com/questions/8797287/is-conditional-rendering-of-components-possible-inside-datatable-without-updatin/8957536# 8957536). Пожалуйста, разместите свои мысли по решению. Благодаря! – Ravi

Смежные вопросы