2010-03-26 3 views
1

facelet과 Seam을 배우고 있는데 다음과 같은 문제에 직면하고 있습니다. 하나는 다른 xml 파일이고 다른 하나는 자체 Beam 구성 요소를 가지고 있습니다. 포함 된 facelet에 보내고 반대하고 포함 된 facelet에 해당하는 backing bean에서 그 객체를 얻고 싶습니다. 상황을 더 잘 설명하기 위해 예제를 취할 것입니다 :Javabean에서 ui : param 값을 얻는 방법

  • registration.xhtml with backing bean Registration.java. 이 클래스에서는 Backing Bean Address.java와 같은 유형의 객체 인
  • address.html을 가지고 있습니다. 이 클래스에서는 Person 객체를 등록 컴포넌트에서 가져 와서 주소를 설정하려고합니다.
  • registration.xhtml는 address.xhtml을 포함하고

방법 주소 콩에서이 객체를 얻기 위해 사용하여 객체를 전달? Registration Bean의 객체에 대한 동일한 참조일까요? ui : param은이 객체를 전달하는 해결책입니까 아니면 다른 해결책이 있습니까? (어쩌면 f : 속성,하지만이 경우에도 콩에서 객체를 얻는 방법)

이 예제는 간단하지만 반드시 현실적인 것은 아니지만 비슷한 문제가 있으며 해결 방법을 모른다.

미리 감사드립니다.

+0

@mihaela 멋진 답변이 있으면 UPvote. –

답변

1

당신은

@Name("registrationBackingBean") 
public class RegistrationBackingBean { 

    @In(required=false) 
    private Person person; 

    @In(required=false) 
    private Address address; 

    public void wire() { 
     person.setAddress(address); 
    } 

} 

당신이 초기 요청 (GET) 동안 와이어하려면

다음 않는 한 ... 당신의 빈

<page view-id="/registration.xhtml"> 
    <action execute="#{registrationBackingBean.wire}"/> 
</page> 

연결할 수있는 페이지 액션을 사용할 수 있습니다

<page view-id="/registration.xhtml"> 
    <action execute="#{registrationBackingBean.wire}" if="#{empty param['javax.faces.ViewState']}"/> 
</page> 
+1

AFAIK, 에는 온 포스트 백 속성이 있습니다. = "# {empty param [ 'javax.faces.ViewState']}"를 검사하는 대신 false로 설정할 수 있습니다. –

+0

글쎄, 나는 <액션 실행 = "# {registrationBackingBean.wire}"on-postback = "false"/>를 의미했다. –

+0

@Petar Minchev 잘 알고 있습니다. 고맙습니다! Seam이 지원하는 버전은 무엇입니까? –

관련 문제