我正在使用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必须在子视图完成工作后重新渲染一些组件。有没有办法做到这一点?
答案 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;