2013-07-02 2 views
1

메뉴 항목별로 일반 속성을 설정하려고 시도하지만 작동하지 않습니다.jsf menuitem이 속성을 설정하지 않습니다.

JSF :

<p:menuitem value="Names" 
      url="/master.xhtml" 
     action="#{navigation.name}"> 

     <f:setPropertyActionListener target="navigation.name" 
     value="Billy" /> 
</p:menuitem> 

ManagedBean은 :

@ManagedBean(name="navigation") 
@SessionScoped // 
public class LinksNavigation { 

    public LinksNavigation() { 
     super(); 
     this.milchFleisch = "./menuFleisch.xhtml"; 
    } 

    private String name; 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name= name; 
    } 

} 

그러나이 작동하지 않습니다. "f : setPropertyActionListener"로 설정하지 마십시오 value = "Bully". 어떻게하면 menuItem에 의해 Property Value를 설정할 수 있습니까 ??

감사합니다 당신이 대신 EL의 표현의 StringsetPropertyActionListener에서

답변

0

. 또한, 당신이 p:menuitem위한에서 the tag documentation에 더 자세히 살펴 봐야 할 필요가

target="navigation.name" 

target="#{navigation.name}" 

에 변경합니다. 속성 action은 메소드 표현식을 기다리고 있습니다. 코드가 설정된 방식으로 MethodNotFoundException이 표시됩니다. 당신은 축약 구문 #{navigation.name}값 식에 사용되는

action="#{navigation.name}" 

action="#{navigation.getName}" 

에 변경해야합니다.

탐색 방법이 혼합되어 있습니다. p:menuItem에 대해 urlaction 속성을 함께 사용할 수 없습니다. 내가 actionsetPropertyActionListener 코드를 테스트했을 때 url이 존재할 때 결코 호출되지 않았습니다. 이 동작은 하나 또는 둘 중 하나를 선택해야 함을 나타냅니다.

샘플을 바탕으로 COMMENT은

, 나는 당신이 당신의 접근 방식을 재고해야한다고 생각. url="/master.xhtml"을 사용하지 않기로 결정하고 일련의 이벤트를 진행해 보도록하겠습니다. 메뉴 항목을 누르면 setPropertyActionListener의 표현 #{navigation.name}은 먼저 name 속성 (예 : navigation.setName("Billy"))으로 'Billy'값을 설정합니다. 그런 다음 action 속성에있는 #{navigation.getName}이라는 표현식은 getName()을 호출합니다. 이제 동작은 String 값이 "Billy"이고 Billy.xhtml (내비게이션 규칙이 faces-config이고 JSF 2.0이 있다고 가정)으로 이동하려고 시도합니다. 그것이 당신이 겪고있는 행동이거나 규칙이 faces-config으로 설정되어 있고 그 값을 하드 코딩하지 않은 경우 다른 이야기입니다. 이 사실을 명심하십시오.

관련 문제