我如何创建可重复使用的背衬结构?

时间:2014-09-16 14:49:05

标签: jsf java-ee jsf-2

我正在使用JSF 2.2并尝试制作一些可重用的组件。
例如,其中一个应该是搜索对话框表格的人。例如:

子视图:

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
            xmlns:h="http://java.sun.com/jsf/html">
    <h:inputText value="#{subviewBean.name}"  >
    <h:inputText value="#{subviewBean.surname}"  >
<h:commandLink title="OK" value="OK" action="subvieewBean.okClick/>
</ui:composition>

我正在尝试将此子视图包含在多个视图中,例如:

查看

<ui:composition xmlns="http://www.w3.org/1999/xhtml" />
      <h:outputText id="outputId" value="#{viewBean.subviewBean.name} #{viewBean.subviewBean.surname}" />
</ui.composition>

使用相应的豆子

@ManagedBean
@Named
@ViewScoped
public class SubviewBean{

    String name; //+ getter, setter
    String surname; //+ getter, setter

    ViewBean viewBean;

    public void okClick(){ 
        viewBean.okinsubviewClicked();
    }
}

@ManagedBean
@Named
@ViewScoped
public class ViewBean{

    SubviewBean subviewBean;
    okinsubviewClicked() {
        rerender(outputId)
}

这不是我真正的代码,但更像是JSF风格的伪代码,旨在说明我的意图。

按下来自searchBean的“ok”按钮数据应该以某种方式转移到viewBean或view2Bean,这可能与viewBean有一些相似之处,但可能不会。无论如何,我希望subview将姓名和姓氏转移到我想要的任何bean,或者单独工作。更重要的是,master bean必须在子视图完成工作后重新渲染一些组件。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

您可以使用<f:param> - 代码

<h:commandButton action="#{subviewBean.someAction}">
    <f:param name="name" value="#{subviewBean.name}" />
</h:commandButton>

并在ViewBean

@ManagedProperty("#{param.name}")
private String name;