如何在Javabean中获取ui:param值

时间:2010-03-26 07:41:14

标签: java jsf seam facelets

我正在学习facelets和Seam,我遇到了以下问题:我有2个xhtml文件,一个包含另一个,每个都有自己的Seam组件作为支持bean。我想发送并反对包含的facelet,并在与包含的facelet对应的backing bean中获取该对象。我将举一个例子来更好地解释这种情况:

  • registration.xhtml,Seam组件作为支持bean Registration.java。在这个类中,我有一个Person类型的对象
  • address.html,Seam组件作为辅助bean Address.java。在这个类中,我想从Registration组件中获取Person对象并设置地址。
  • registration.xhtml包含address.xhtml并使用
  • 传递对象

如何在Address bean中获取此对象?来自Registration bean的对象的引用是一样的吗? ui:param是传递此对象的解决方案还是有另一种解决方案? (也许f:属性,但即使在这种情况下,我如何获取bean中的对象)

这个例子很简单,不一定是现实的但是我有类似的问题,我不知道如何解决它。

提前致谢。

1 个答案:

答案 0 :(得分:1)

您可以使用Page操作来连接bean

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

...

@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}" if="#{empty param['javax.faces.ViewState']}"/>
</page>