2010-03-29 5 views
1

이름이 controller 인 get 매개 변수가 있습니다. 내 백업 콩에 (propertyChangeListener 포함)에 합격 할 때 내가 대신 해당 매개 변수의 실제 가치 null을 얻을 : 적절한 무엇get 매개 변수를 jsf의 백업 빈에 전달하는 방법은 무엇입니까?

  1. :

    <h:commandButton value="#{msg['mail.send']}" styleClass="mailbutton" action="#{mailSender.sendMail}"> 
        <f:setPropertyActionListener target="#{mailSender.controllerName}" value="{#param.controller}"/> 
    </h:commandButton> 
    

    그래서, 나는이 개 질문이 get 매개 변수 값으로 bean 특성을 설정하는 방법은 무엇입니까? 사실, 나는 이미 ExternalContext#getRequestParam에서 값을 얻었지만 다른 해결책이있을 수 있습니다.

  2. 더 흥미로운 질문 : 여기에서 propertyActionListener가 작동하지 않는 이유는 무엇입니까? 그것은 실제로 무엇을 하는가? (나는 그것에 대해 약간의 생각을 가지고 있지만 더 포괄적 인 설명을 읽는 것이 좋을 것이다).

답변

3

첫째는 h:commandButtonPOST 요청 아닌 GET 요구를 발생. GET 요청을 실행하려면 h:outputLink이 필요합니다. GET 매개 변수를 설정하려면 f:param이 필요합니다. 이를 bean 특성으로 설정하려면 <managed-property>faces-config.xml에 정의하고 값은 #{param.name}입니다. 더 많은 힌트와 코드 예제는 here에서 찾을 수 있습니다.

둘째, 코드가 유효하지 않습니다. f:setPropertyActionListener 값은 #{param.controller}이어야합니다. 그리고 작동 시키려면 #{param.controller}이어야합니다. 초기 요청 중에는이 이미 있어야합니다. 예상대로 자동 요청으로 후속 요청의 값을 설정하지 않습니다. 대신 <h:inputHidden value="#{mailSender.controllerName}"/>이 필요합니다.

+0

@BalusC : 답변에서 나는 매우 불분명 한 질문을 한 것을 이해합니다. 그래서 그것이 당신이 모든 가능한 '진정한'의미들에 대해 즉시 대답하기로 결정한 이유입니다. 어쨌든 고마워요, 평소대로 유용합니다. – Roman

관련 문제