2014-03-25 36 views
0

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

这里是形式

<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 UDPATE值的代码

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


我的问题是值“XXX ,名称“没有得到在<h:selectOneMenu>. udpated和价值已经在Bean.executivedirectorslist可用。我怎么能从支持豆更新它?

回答

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

+0

谢谢erk.But除了上面提到的方法之外,还有其他方法吗?context.update(“ipdpform:exedirectors”); ? – techy360

+0

这可能有助于你[链接](http://www.primefaces.org/showcase/ui/requestContext.jsf) – erk

+0

谢谢erk.But不以这种方式工作吗?RequestContext context = RequestContext.getCurrentInstance() ; execdirectorRC =“XXX,Name”; context.update(“ipdpform:exedirectors”); – techy360