2012-01-18 2 views
3

을 선택 목록이 코드입니다. getDualListModelForTags()에서 픽스리스트를 업데이트 할 수 있도록 약간 수정했습니다. 그러나 picklist (id = tags)는 다시 렌더링되지 않습니다. 페이지를 새로 고칠 때만 수정 목록이 선택 목록에 적용됩니다.JSF 아약스있는 명령 업데이트되지 primefaces이

답변

12

PrimeFaces <p:commandButton> 구성 요소가 <f:ajax>과 함께 작동하지 않습니다. 단추 자체의 Ajax 대상 특성을 대신 사용해야합니다. <f:ajax execute> 대신 <p:commandButton process>을 사용해야합니다. 그러나이 기본값은 @form이므로 이미 생략 할 수 있습니다. <f:ajax render> 대신 <p:commandButton update>을 사용해야합니다. 이미 @form에 해당하는 클라이언트 ID를 지정하지 않아도되므로 @form이면 충분합니다. 또한 기본값 인 이미 ajax="true" 속성은 불필요합니다.

그래서 그냥이가 수행해야합니다

<p:commandButton value="Select tags" update="@form" /> 

관련없는 구체적인 문제, 당신은 getter 메소드 내부의 비즈니스 일을하고 있습니다. 이것은 나쁜 생각입니다. 단추의 action 메서드에서 대신 수행하십시오. 또한 뷰 범위 데이터에 세션 범위 Bean을 사용하는 것 같습니다. 이것은 나쁜 생각입니다. 뷰 범위에 빈을 대신 넣으십시오.

+0

우수 답변. 빈 줄은 페이지를 새로 고치는 동안 남아 있기 때문에 세션 스코핑 된 빈을 사용하고 있다는 것을 알 것입니다. 그러나 왜 뷰 범위가 더 좋을까요? – BigJ

+1

왜냐하면 세션 범위 데이터가 아닌보기 범위 데이터를 다루기 때문입니다. 당신이 세션 데이터를 범위로보기는 데이터를 범위 치료하면 최종 사용자가 모든 상호 작용 후 여러 창/동일한 브라우저 세션에서 탭과 그 사이의 스위치에서 열려 같은 페이지 (보기)를 가지고 때마다, 다음 endser는 inconsitenties를 볼 수 있습니다. – BalusC

관련 문제