2014-09-22 59 views
0

這是使用richfaces jsFunction和參數的簡短示例。以編程方式將UiParameter添加到UIAjaxFunction

<r:jsFunction name="addTag" action="#{bean.method}"> 
    <r:param name="param" assignTo="#{bean.tagId}"/> 
</r:jsFunction> 

然後您可以使用從javascript addTag('1')並將參數存儲到bean中。

我需要完成相同的功能,以編程方式創建jsFunction和ading參數。這是我使用但不工作的代碼:

UIAjaxFunction jsFunctionAddTag = new UIAjaxFunction(); 
jsFunctionAddTag.setName("addTag"); 
FacesContext fc = FacesContext.getCurrentInstance(); 
ExpressionFactory ef = fc.getApplication().getExpressionFactory(); 
MethodExpression me = ef.createMethodExpression(fc.getELContext(), "#{bean.method}", 
         null, new Class[]{}); 
jsFunctionAddTag.setActionExpression(me); 
UIParameter param = new UIParameter(); 
param.setName("param"); 
param.setAssignToExpression(ef.createValueExpression(fc.getELContext(), 
          "#{bean.tagId}", String.class)); 
jsFunctionAddTag.getChildren().add(param); 

當執行該方法時,tagId的值未設置。我做錯了什麼?

回答

0

如在服務器側可以從的ExternalContext獲得所述參數的替代方法:

FacesContext context = FacesContext.getCurrentInstance(); 
Map map = context.getExternalContext().getRequestParameterMap(); 
String paramValue = (String)map.get("paramName"); 
相關問題