如何从支持bean获取组件名称以与p:component一起使用

时间:2012-09-04 21:43:51

标签: dynamic primefaces

我需要根据调用页面的位置更新不同的组件。

<p:commandButton id="questionnaire_save_button"
 value="#{shop_msgs['questionnaire.save.button.label']}"                               
 action="#{questionnaireBean.update(questionnaire)}"                              
 update=":#{p:component(#{questionnaireBean.refreshComponentId})}" />

在我的问卷调查表中,我有以下方法:

public String getRefreshComponentId() {
refreshComponentId = "";
if(isFromCCRM()) {
 refreshComponentId ="questionnaires_wrapper_panel";
 }else {
   refreshComponentId = "breadcrumbs_panel";
  }
  return refreshComponentId;

}

但是我一直收到语法错误: 引起:javax.el.E​​LException:错误解析::#{p:component(#{questionnaireBean.refreshComponentId})}     在org.jboss.el.lang.ExpressionBuilder.createNodeInternal(ExpressionBuilder.java:130)     在org.jboss.el.lang.ExpressionBuilder.build(ExpressionBuilder.java:151)     在org.jboss.el.lang.ExpressionBuilder.createValueExpression(ExpressionBuilder.java:195)     at org.jboss.el.E​​xpressionFactoryImpl.createValueExpression(ExpressionFactoryImpl.java:68)     at com.sun.faces.facelets.tag.TagAttributeImpl.getValueExpression(TagAttributeImpl.java:385)     ......还有117个 引起:org.jboss.el.parser.ParseException:在第1行第17列遇到“{”。 期待以下之一:     “” ...     “)”......     “[”......     “,”......     “&gt;” 中...     “gt”......     “&LT;” ...     “lt”......     “&gt; =”......     “ge”......     “&lt; =”......     “le”......     “==”......     “eq”......     “!=”......     “ne”......     “&安培;&安培;” ...     “和”......     “||” ...     “要么” ...     “*”......     “+”......     “ - ”......     “?” ...     “/”......     “div”......     “%”......     “mod”......     “(”..

1 个答案:

答案 0 :(得分:4)

变化:

update=":#{p:component(#{questionnaireBean.refreshComponentId})}" />

为:

update=":#{p:component(questionnaireBean.refreshComponentId)}"