2010-02-10 3 views
2

3 옵션과 inputTextArea가있는 라디오 선택 페이지가 있습니다. 내 페이지에서 submit 버튼을 누르면 몇 가지 검증을해야합니다 ... 그렇게하기 위해, 나는 validator를 라디오에 넣습니다. 문제는 유효성 검사기가 실행될 때 inputTextArea 및 라디오 값이 필요하지만 페이지가 제출되기 전에 페이지에 정의 된 값이 아니라 이전 값이 제공된다는 것입니다.JSF UIComponents의 업데이트 된 값

예 : String.valueOf (textAreaOcorrencia.getValue())가 null이지만 textArea가 비 었으므로 String.valueOf (textAreaOcorrencia.getValue())가 처음으로 sumited 될 때 String.valueOf (textArea.getValue()). 빈 문자열로 뽑혔다. 두 번째 제출 될 때, 그것은 첫 번째 제출에 있어야했던 것의 가치가 있습니다. JSF 라이프 큐클과 관련이 있다는 것을 알고 있지만이 값을 업데이트하는 방법을 모르겠습니다. 사전에

감사합니다 ... 적용 요청 값 단계에서

답변

3

는 제출 된 값을 설정하고 submittedValue로 제공됩니다. 유효성 검사 단계에서 제출 된 값의 유효성을 검사하고 변환하여 value으로 설정합니다. 구성 요소는 구성 요소 트리에 나타나므로 맨 아래쪽 순서로 유효성이 검사됩니다. 문제의 구성 요소가 실제로 컴포넌트 트리에서 후 현재 구성 요소를 표시하는 경우

따라서, 당신은 UIInput#getSubmittedValue() 대신 UIInput#getValue()에 의해 그 값을 얻을해야합니다.

JSF 수명주기에 대해 자세히 알아 보려면 this self-practice article이 유용 할 수 있습니다.

+0

안녕하세요, 저는이 방법으로 UiComponente의 가치를 얻는 대신에 다음과 같이 문제를 해결했습니다 :UIComponent UI = view.findComponent (idComponent); if (UI instanceof HtmlSelectOneRadio) { \t HtmlSelectOneRadio radio = (HtmlSelectOneRadio) UI; \t return radio; } ... 한 String.valueOf (radio.getValue()) 등호 (일부 개체) – Moon13

+0

I했던이 :... 반복자 이 FacesContext.getCurrentInstance() getExternalContext를() = getRequestParameterNames(); while (it.hasNext()) { \t String requestParameterName = it.next(); if (requestParameterName.equals (idComponent)) { \t parameterValue = request.getParameter (requestParameterName); \t \t \t \t \t} } idComponent이 루프에서 다음 임의의 ID를 매번 생성됩니다 JSP, XHTML, 어떤 페이지, 또는 다른 JSF에 지정할 수있는 HTML 태그의 ID이며, 당신이 원 필요한 UiComponent를 얻을 수 없게됩니다. – Moon13

+0

그건 실제로 문제를 해결하는 또 다른 방법입니다 (실제로 : 해결 방법). JSF 자체가 구성 요소의 제출 된 값으로 이미 설정 한 JSF 깔대기 아래에서 원시 서블릿 요청 매개 변수 맵을 운반합니다. 예를 들어, ** 처음에는 귀하의 방식이 효과가 없었던 이유와 제안 된 솔루션이 문제를 해결하는 이유를 이해합니까? 이 모든 것이 나를 한숨 쉬게 만듭니다./ – BalusC

관련 문제