2012-07-12 3 views
1

h : SelectOneMenu 컨트롤을 포함하는 표준 JSF h : 양식이 있습니다. 페이지가 렌더링 될 때 채워지는 목록에서 항목을 선택하는 한 완벽하게 작동합니다. 중요하다고 생각하지 않지만 컨텍스트에 넣으려면 select의 값을 사용하여 일치하는 레코드 목록을 반환하는 쿼리를 작성해야합니다.JSF 양식의 SelectOneMenu 컨트롤에 동적으로 추가 된 옵션은 null로 제출합니다.

컨트롤에 JQuery 자동 완성 상자를 구현했지만 원래 값 중 하나를 선택하는 한 여전히 작동합니다.

페이지 렌더링시 선택 컨트롤에 값을 입력하지 않으면 문제가 발생합니다. JQuery를 사용하여 목록에없는 값을 입력하면 새 값으로 선택 옵션에 값이 추가되도록 설정했습니다.

옵션이 기본 선택 컨트롤에 추가되고 자바 스크립트를 통해 선택되었는지 확인할 수 있습니다. 그러나 setter가 바로 뒤에 backing bean에서 호출 될 때 setter로 전달 된 값은 null이며 쿼리를 실행하는 함수에는 결코 도달하지 않습니다. AJAX 응답에서 다음 오류가 반환되지만 값을 확인한 곳을 아직 찾을 수 없습니다. 필수 입력란도 아닙니다.

<h:selectOneMenu id="make" styleClass="combobox" value="#{listBean.make}" 
        effect="fade" label="#{listBean.makeLabel}" > 
     <f:selectItems value="#{listBean.makeList}" /> 
    </h:selectOneMenu> 

그리고 빈에서 세터 : 난 그냥 새로운를 포함 할 수있는 방법을 찾을 필요가 추측하고있어

public void setMake(String make) { 
     this.make = make; 
    } 

여기

Validation Error: Value is not valid

내 프런트 엔드 코드 백킹 빈의 makeList 목록에있는 옵션을 사용할 수 있지만 어떻게 할 것인지 잘 모르겠습니다. 어떤 도움이나 제안을 주시면 감사하겠습니다.

자바 EE 6, 글래스 피쉬 3.1, 3.7 이클립스 - 파이어 폭스와 크롬

+0

'makeList'는 무엇입니까? – SJuan76

+0

그것은 SelectItems의 ArrayList를 포함하는 입니다. – Mike

+0

SelectItem을 사용하지 않았습니다 (이미 Bean을 전달했습니다). 'make' 값을 SelectItem으로 만들 수 있습니까? – SJuan76

답변

1

모두에서 관찰 된 문제를 당신은하지 자바 스크립트를 통해 <f:selectItems>를 통해 동적으로 추가 된 항목을 제공해야합니다. 항목이 <f:selectItems>에 없으면이 유효성 검증 오류가 발생합니다. 이는 불법/제공되지 않은 값을 서버 측으로 가져 오기 위해 변조/해킹 된 요청에 대한 보호 수단의 일환으로 수행됩니다.

JSF 컴포넌트 라이브러리를 사용하는 것이 더 쉽습니다. 예를 들어 PrimeFaces는 정확한 용도로 <p:autoComplete>입니다.

+0

대답을 얻으 려하지 않았지만, 적어도 지금은 왜 작동하지 못하는지 압니다. 감사! – Mike

관련 문제