p:pickList 검증 실패 후 데이터를 채울 수 없음

p:pickList 검증 실패 후 데이터를 채울 수 없음
문제 설명:
다이어로그에 input과pickList가 있습니다.input에 불법 데이터를 기입한 후 폼을 제출하여 검증에 실패합니다.다이어로그를 즉시 닫고 다시 열면pickList가 데이터를 채울 수 없습니다.
같은 질문은 이미 Stackoverflow에 등장했고 현재 공식 포럼에서 질문 해결 방법은 아직 유효한 대답을 얻지 못했다.
URL:here 다음은 제가 해결한 방법입니다. 좀 추하지만:
This is an old question, but I also encountered this issue recently, and now being helpless. Let's see the p:pickList:
<td>
    <p:pickList id="customersList" iconOnly="true"
                value="#{addEditUserController.customersList}" var="customer"
                itemValue="#{customer.value}" itemLabel="#{customer.label}"/>
</td>

We know the [var="customer"] is an iterator, but when validation error happens, this var is assigned to String type, it's odd. When you close this popup then re-populate it again, you will get an error, messages like this: no property label(value) on type of String... the customer var now is a String, so it has no value nor label property.
For now, I use a tricky way, it won't work out always, it depends on your code: Assume that the value and label are unique, set customersList type of List String, customersList binds the label, find the value of the label when submit at the backend; Why this way can avoid re-populate exception, that's because the iterator is always type of String, no matter validation error occurs or not.
Hope this can help the need.

좋은 웹페이지 즐겨찾기