<h:dataTable>
내에 목록을 반복하여 체크 박스, 일부 텍스트 및 텍스트 상자가 포함 된 일부 행을 표시하는 JSF 페이지가 있습니다.JSF Managed Bean에서 동적 UIComponents에 액세스
<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>
나는 emailID
모든 텍스트 상자의 checkbox
및 ID를 모든 체크 박스의 ID를 부여했다. 페이지가 렌더링 될 때 페이지 소스를 확인할 때 'rm : 0 : checkbox', 'rm : 1 : checkbox'... 및 'text : rm : 0 : EMAILID ','RM : 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");
를 사용하는 경우. 1 : 체크 박스, RM : 2 :
그래서, 요약,
JSF는 RM과 같은 식별자 생성 체크 박스 등,하지만 JSF 페이지에서이 UI 구성 요소에 액세스하려고 할 때, 나는 수 없습니다입니다 그것을하기 위해.
나는 뭔가를 놓친가요?
도움 주셔서 감사합니다. 내 새로운 질문은 아래 링크에서 찾을 수 있습니다 : (http://stackoverflow.com/questions/18594896/switch-off-validations-during-ajax-call) –