2015-01-20 11 views
0

commandLink의 actionListener에서 객체를 배킹 빈으로 전달하는 데 문제가 있습니다. 내가 가지고있는 콩 콩을 사용하는 콩 MeasureBeanxhtml 파일입니다. XHTML의에서 <h : commandLink action>의 인수로 <p : selectOneListbox var = "ch">을 전달하십시오.

내가 가진 :

빈에서
<p:selectOneListbox var="ch"> 
    <f:selectItems value="#{MeasureBean.checkpoints}" var="cp" itemValue="#{cp}" /> 
    <p:column> 
     <h:outputText value="#{ch.name}" /> 
    </p:column> 
    <p:column> 
     <h:commandLink actionListener="#{MeasureBean.onCheckpointRemoved(ch)}"> 
      <h:graphicImage library="#{ctx.theme}" name="images/delete.gif" /> 
      <f:ajax event="click" /> 
     </h:commandLink> 
    </p:column> 
</p:selectOneListbox> 

내가 가진 방법 :

public void onCheckpointRemoved(Checkpoint viewCheckpoint) { 
    System.out.println(viewCheckpoint); 
    // TODO 
} 

문제는 관계없이 내가 태그 <f:ajax> 여부, 매개 변수 viewCheckpoint 사용 whethert의입니다 빈에서 메소드의 값은 항상 널입니다. 그 매개 변수를 빈에 전달해야합니다. 전체 객체 일 필요는 없으며 검사 점의 ID 만 전달할 수 있습니다. 나는 또한 시도 무엇이었다 :

<h:commandLink actionListener="#{MeasureBean.onCheckpointRemoved(cp)}"> 

(cp 대신 ch). 그러나 차이는 없습니다.

도와주세요,
마테우스

답변

0

당신은 <p:selectOneListBox>의 값을 설정하는 것을 잊었다. 또한 변환기를 만들어야합니다.

당신은 PrimeFaces Showcase

<p:selectOneListbox var="ch" value="#{MeasureBean.checkPointTest}" converter="checkPointConverter"> 
<f:selectItems value="#{MeasureBean.checkpoints}" var="cp" itemValue="#{cp}" /> 
<p:column> 
    <h:outputText value="#{ch.name}" /> 
</p:column> 
<p:column> 
    <h:commandLink actionListener="#{MeasureBean.onCheckpointRemoved(ch)}"> 
     <h:graphicImage library="#{ctx.theme}" name="images/delete.gif" /> 
     <f:ajax event="click" /> 
    </h:commandLink> 
</p:column> 
</p:selectOneListbox> 

Checkpoint checkPointTest; 
// getter/setter.... 
public void onCheckpointRemoved(Checkpoint viewCheckpoint) { 
System.out.println(viewCheckpoint); 
// TODO 
} 
+0

감사 Pellizon에 컨버터의 예를 확인할 수 있습니다. 나는 당신의 제안을 시도했지만, 이제 목록 상자는 내용을 전혀 렌더링하지 않습니다. 상자에 항목이 없습니다. 필자는 listbox의 정의에서''태그가 필요하다고 생각합니다. –

+0

답변을 다시 확인하십시오! 이제 좀 더 정확한 샷입니다 :) – Pellizon

+0

Thanks! 그게 내가 한 것처럼 똑같지, 그렇지? 유일한 차이점은 가치와 변환기의 존재입니다 ... 편집 : 나는 JS "해킹"으로 문제를 해결할 수있었습니다. 나는 을 추가했다.이 값에는 click 이벤트에 JS로 값을 설정 한 다음 bean의 메소드를 호출한다. '' 이제 매력처럼 작동합니다. –