JSF Java Server Faces动态加载组件

时间:2014-05-26 01:10:07

标签: java jsf wildfly

我正在尝试加载自定义组件(从UIInput开始)。然后我将html输入编码回客户端。因此,我的组件加载器是:

@FacesComponent("TomsWidgetComponent")
@SessionScoped
public class TomsWidgetComponent {
public TomsInput getNewInput(UIComponent parent)
{
  ExpressionFactory factory = getFacesContext().getApplication().getExpressionFactory();

    TomsInput newComponent = (TomsInput) getFacesContext().getApplication().createComponent(getFacesContext(), "org.tom.example.toms.TomsInput", "org.tom.example.toms.TomsInput");
    String newId = FacesContext.getCurrentInstance().getViewRoot().createUniqueId();
    newComponent.setId(newId);
    elements.put(newId, newComponent);

    newComponent.setInputData(new InputData());

    ValueExpression valueExpression = factory.createValueExpression(getFacesContext().getELContext(),"#{tomsInput.string}",String.class);
    newComponent.setValueExpression("value", valueExpression);

    getChildren().add(newComponent);
    pushComponentToEL(getFacesContext(), newComponent);
    return newComponent;
}

html

<"input  type="tel"  id="j_id2"  oninput="mojarra.ab(this,event,0,'execute',0)" /input >"

输入显示正常,但ajax事件似乎永远不会出现在我的组件中。我已经尝试了几种排列,使用setValueExpression上的密钥,并添加了行为监听器。

...

我已经通过了异常,但现在从表单返回的Ajax导致我的组件重新加载。它的内容是:

tomswidgetform=tomswidgetform&j_id2=fffdsdfgbg&javax.faces.ViewState=-6270730402975544133%3A7227399941332846704&javax.faces.source=j_id2&javax.faces.partial.event=input&javax.faces.partial.execute=j_id2%20j_id2&javax.faces.behavior.event=change&AJAX%3AEVENTS_COUNT=1&javax.faces.partial.ajax=true

知道可能出错的是什么?感谢。

0 个答案:

没有答案