2011-09-08 2 views
2

다시 한번 PrimeFaces와 GAE의 결합은 나를 미치게합니다. Inside a p:dataTable 이미지를 클릭하고 bean 메소드를 호출하고 매개 변수를 설정하려고합니다. 메서드가 호출되었지만 매개 변수가 작동하지 않습니다.Google App Engine : f : setPropertyActionListener with p : ajax

<h:form id="f1"> 
    <h:outputText id="text" value="#{testBean.index}"/> 
    <h:graphicImage url="/images/cut.png"> 
    <p:ajax event="click" process="@this" update="text" 
      actionListener="#{testBean.test}" > 
     <f:setPropertyActionListener target="#{testBean.index}" value="5" /> 
    </p:ajax> 
    </h:graphicImage> 
</h:form> 

TestBean은 다음과 같습니다 내 :

@javax.faces.bean.ManagedBean @ViewScoped 
public class TestBean implements Serializable{ 
    private int index; // getter/setter 

    @PostConstruct public void init() { 
    index = 0;log.log(Level.WARNING, "@PostConstruct");} 

    public void test(ActionEvent ae){ 
    log.log(Level.WARNING, "Index: "+index);} 
} 
내가 하나 @PostConstruct를 참조 로그에

항상 Index: 0

을 이미지를 클릭 한 후 다음 (표없이) 단순화 된 예입니다 업데이트 값 업데이트 문제는 여기에서 설명 할 수 있습니다 JSF GAE: Value Update Problem in managed bean method

답변

3

나는 GAE에 대해 많이 모른다. 그래서 나는 그것이 당신의 코드를 어떻게 든 방해하지 않는다고 생각할 수 없다. 그러나 반드시 태그에 사용할 적절한 태그가 <f:setPropertyActionListener>이라고 생각하지 않습니다. 나는 그것을 받아 들일 것이라고 생각하지 않는다.

다음은 <p:commandLink><span> 태그를 사용하여 뷰가있는 bean 속성에 대한 ajax 호출을 구현 한 예입니다.

<p:commandLink actionListener="#{listUsers.toModify}" oncomplete="userEditDlg.show()" 
    update="addEditForm:editGrid addEditGrid:passwordChange addEditGrid:passwordGrid"> 
    <f:param name="userId" value="#{user.userId}" /> 
    <span class="ui-icon icoCogEdit" style="padding-right: 1.5em;" /> 
</p:commandLink> 
<p:commandLink actionListener="#{listUsers.toDelete}" oncomplete="userDelDlg.show()" 
    update="listUsersForm:dialogText"> 
    <f:param name="userId" value="#{user.userId}"/> 
    <span class="ui-icon icoDelete" /> 
</p:commandLink> 

CSS 클래스를 선택한 정적 이미지 아이콘으로 설정 한 다음 클릭하면 대화 상자가 호출됩니다.

+4

설명 :''는'ActionSource'를 구현하는 상위 구성 요소에서만 지원됩니다. ''는 그렇지 않습니다. 그러나 흥미로운 세부 사항은 ''대신에 ''을 사용하면 정확하게 그 메시지와 함께 예외가 발생합니다. ''은 또한 원하는 ''로 대체 될 수 있습니다. ''는'

'안에' '대신 똑같이 작동합니다. – BalusC

+0

@BalusC, 나는 이것을 인식하지 못했고 새로운 것을 배웠다. 그러나 당신이 자세히 보면''가 실제로''태그 내부에 있음을 볼 수 있으며, 들여 쓰기가 엉망이다. 그래도 좋은 정보입니다. –

+0

''은 다른 ''의 하위 일 수 없습니다. 그것은 가장 친숙한'UIComponent'의 자식 일뿐입니다. – BalusC