2015-01-09 7 views
3

항목을 선택할 때 radio bean을 사용하고 있습니다. backing bean에 대한 작업을 실행하고 싶습니다 (결과 페이지로 이동하지는 않지만 일부 작업을 수행 한 후 업데이트해야 함). Ajax를 통해 현재 페이지). 문제는 p에서 backing bean 작업 실행 : selectOneRadio

public void selectRadioItem(ValueChangeEvent event) { 
    String[] selectedItems = (String[]) event.getNewValue(); 
    //more... 
} 

는 내가 부족 코드에 뭔가 문제가있다 ... 나는 백업 빈 값 변경 리스너 작업을

<h:form id="one-radio"> 
    <p:selectOneRadio layout="grid" 
        valueChangeListener="#{myBean.selectRadioItem}" > 
     <p:ajax process="@this" update="@form" /> 
     <f:selectItems value="#{myBean.radioOptions}" var="radio" 
      itemLabel="#{radio.name}" itemValue="#{radio.id}" > 
     </f:selectItems> 
    </p:selectOneRadio> 
</h:form> 

과 백업 빈 메소드를 실행 얻을 수있다 ? 내가 선택한 많은 체크 박스에 대해이 동일한 구조를 사용했습니다 ...

+0

http://stackoverflow.com/q/14956261/1391249은 http : // stackover flow.com/q/9180938/1391249 – Tiny

+0

그런데 "*하지만 일부 작업을 수행하고 Ajax *를 통해 현재 페이지를 업데이트하는 것"은 무엇을 의미합니까? ** 현재 페이지 **를 업데이트하는 것은 (AJAX를 통해) 동기 요청과 같은 것을 대신 참조합니다. – Tiny

+0

http://stackoverflow.com/q/11879138/1391249 – Tiny

답변

3

Rodrigo, valueChangeListener와 ajax를 통한 간단한 메소드 호출 사이에는 차이가 있습니다. 문제를 해결하기 valueChangeListener<f:ajax>

의 차이에 대한

Check this answer by BalusC

, 당신은 <p:ajax>listener 속성을 사용할 수 있습니다. OneRadio 구성 요소를 사용하면 값 목록을 선택하려면, 하나의 값을 수신하는 데 사용됩니다

는, 다음을 수행 SelectOneMenu에게

시도를 사용하십시오 backbean에서

<p:selectOneRadio layout="grid" value="#{myBean.radioValue}"> 
    <p:ajax process="@this" update="@form" listener="#{myBean.selectRadioItem}"/> 
    <f:selectItems value="#{myBean.radioOptions}" var="radio" 
     itemLabel="#{radio.name}" itemValue="#{radio.id}" > 
    </f:selectItems> 
</p:selectOneRadio> 

을, 당신은 제거 할 수 있습니다 이벤트 매개 변수의 OneRadio 구성 요소의 값이 지금은 radioValue로 명명 속성이기 때문에

String radioValue; 
... 
public void selectRadioItem() { 
    String selectedItem = this.radioValue; 
//more... 
}