JSF - 如何更新支持bean的<h:selectonemenu>值</h:selectonemenu>

时间:2014-03-25 09:23:29

标签: java-ee jsf-2 selectonemenu backing-beans

这是我<h:selectOneMenu>的代码。
我试图在支持bean execdirectorRC =“XXXvalue”中分配值后,从辅助bean更新其值。 在这里,executivedirectorslist确实有一个列表值。

以下是

形式的代码
<h:form id="ipdpform">
  <h:selectOneMenu id="exedirectors" value="#{Bean.execdirectorRC}">
    <f:selectItems value="#{Bean.executivedirectorslist}"
       var="s" itemLabel="#{s.label}" itemValue="#{s.value}" />
    <p:ajax listener="#{Bean.getDirectReporters}"
       update="rpt2 :growl :error" execute="@this"
       partialSubmit="true" />
    <f:param name="rpt1" value="rpt1" />
  </h:selectOneMenu>
</h:form >

这是我试图用来替代支持bean的值的代码

RequestContext context = RequestContext.getCurrentInstance();
                execdirectorRC = "XXX,Name";
                context.update("ipdpform:exedirectors");


我的问题是值{XXX,Name'未在<h:selectOneMenu>.中显示,Bean.executivedirectorslist中的值已经可用。如何从支持bean更新它?

1 个答案:

答案 0 :(得分:0)

您可以使用如下的静态实用程序功能。

public static void addWillBeUpdatedComponent(final String componentId) {
        FacesContext.getCurrentInstance().getPartialViewContext()
                .getRenderIds().add(componentId);
    }

public static void removeWillBeUpdatedComponent(final String componentId) {
        FacesContext.getCurrentInstance().getPartialViewContext()
                .getRenderIds().remove(componentId);
}

componentId必须采用此格式form:componentId而非:form:componentId