これは、パラメーターを指定して richfaces jsFunction を使用する短い例です。
<r:jsFunction name="addTag" action="#{bean.method}">
<r:param name="param" assignTo="#{bean.tagId}"/>
</r:jsFunction>
次に、javascript addTag('1') から使用でき、パラメーターが Bean に格納されます。
jsFunction と ding パラメーターをプログラムで作成するのと同じ機能を実現する必要があります。これは私が使用しているが機能しないコードです:
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 の値は設定されません。私が間違っていることは何ですか?