У меня есть страница JSF, в которой я повторяю список в пределах <h:dataTable>
, чтобы отобразить некоторые строки, содержащие флажок, некоторый текст и текстовое поле.Доступ к динамическим UIComponents в управляемом компоненте JSF
Я должен проверить <h:dataTable>
так, чтобы, когда пользователь установил флажок, он должен ввести текст внутри текстового поля.
Это моя страница JSF.
<h:form prependId="false" id="form">
<h:dataTable id="rm" width="100%" cellspacing="4"
value="#{controller.alertTriggers}" var="alt"
columnClasses="c1,c2,c3,c4">
<h:column>
<h:selectBooleanCheckbox value="#{alt.checkValue}" id="checkbox"/>
</h:column>
<h:column>
<h:outputText value="#{alt.id}" />
</h:column>
<h:column>
<h:outputFormat value="#{alt.msg1}" />
</h:column>
<h:column>
<h:message for="emailID" id="email" styleClass="validation-error"/>
<h:inputText value="#{alt.mailId}" id="emailID" style="width: 87%;" />
</h:column>
</h:dataTable>
</h:form>
Я дал идентификатор всех флажков, как checkbox
и ид всех текстовых полей как emailID
. Когда страница отображается, при проверке источника страницы я обнаружил, что идентификаторы флажков: «rm: 0: checkbox», «rm: 1: checkbox» ... и те из текстовых полей: «rm: 0: EMAILID»,„тт: 1: EMAILID“..
в контроллере, я хочу, чтобы получить доступ к этим динамическим текстовым полям и флажки, для которых я использую следующий код:
FacesContext context = FacesContext. getCurrentInstance();
for (int i=0;i<9;i++){
UIInput u=(UIInput) FacesContext.getCurrentInstance().getViewRoot().findComponent("form:rm:" +i+":checkbox");
if ((Boolean) u.getValue()){
UIInput ui=(UIInput) FacesContext.getCurrentInstance().getViewRoot().findComponent("form:rm:" +i+":emailID");
//code
}
}
Но это дает java.lang.NullPointerException
Даже используя код:
UIInput u=(UIInput) FacesContext.getCurrentInstance().getViewRoot().
findComponent("form:rm:0:checkbox"); gives the same exception.
Но если я использую
UIInput u=(UIInput) FacesContext.getCurrentInstance().getViewRoot().
findComponent("form:rm:checkbox");
это не дает исключение нулевого указателя, но я не знаю, который Флажка-й значение она дает.
Так, в целом,
JSF генерирует идентификаторы гт: 1: флажок, п.м.: 2: флажком и т.д., но когда я пытаюсь открыть компонент пользовательского интерфейса в JSF страницы, я не могу сделать это.
Я что-то упустил?
Спасибо за помощь. Мой новый вопрос можно найти в следующей ссылке: (http://stackoverflow.com/questions/18594896/switch-off-validations-during-ajax-call) –