代码之家  ›  专栏  ›  技术社区  ›  Romain Linsolas

无法同时定义事件并在此事件上绑定<a4j:support/>

  •  0
  • Romain Linsolas  · 技术社区  · 14 年前

    让我们考虑一下这个简单的代码:

    <h:form id="myForm">
        <h:inputText id="myInput">
            <a4j:support event="onchange" actionListener="#{myBean.doSomething}"/>
        </h:inputText>
    </h:form>
    

    这将生成以下HTML代码:

    <input id="myForm:myInput" type="text" name="myForm:myInput" onchange="A4J.AJAX.Submit(...)" />
    

    现在,我只是在 onchange 我的事件 <h:inputText> :

    <h:form id="myForm">
        <h:inputText id="myInput" onchange="alert('foobar');">
            <a4j:support event="onchange" actionListener="#{myBean.doSomething}"/>
        </h:inputText>
    </h:form>
    

    这将生成以下HTML代码:

    <input id="myForm:myInput" type="text" name="myForm:myInput" onchange="alert('foobar');" />
    

    如您所见,Ajax代码是 不加 不再。就我而言,这是一种非常奇怪的行为。为什么 <a4j:support> 如果事件已在输入字段中定义,则不附加Ajax调用?

    所以我的问题是如何使 <A4J:支持& GT; 工作在一个 event 已在中定义的 input ?当然,解决方案必须同时运行在 换上 Ajax调用。

    换句话说,我希望有以下HTML:

    <input id="myForm:myInput" type="text" name="myForm:myInput" onchange="alert('foobar'); A4J.AJAX.Submit(...)" />
    

    我使用的是RichFaces 3.3.2和JSF 1.2


    编辑

    当然,我可以移动 换上 中的javascript代码 onsubmit 的属性 <A4J:支持& GT; 做类似的事情:

    <h:inputText id="myInput">
        <a4j:support onsubmit="alert('foobar');" event="onchange" actionListener="#{myBean.doSomething}"/>
    </h:inputText>
    

    但这是唯一的办法吗??

    3 回复  |  直到 14 年前
        1
  •  1
  •   BalusC    14 年前

    seen <a4j:commandButton onclick="someFunction()">

        2
  •  1
  •   Abel Morelos    14 年前

        3
  •  0
  •   Community dbr    7 年前

    event <a4j:support> Abel Morelos onchange

    <h:inputText id="myInput">
        <my:validation .../>
        <a4j:support event="onchange" actionListener="#{myBean.doSomething}"/>
    </h:inputText>
    

    <h:inputText>

    <h:inputText id="myInput" onchange="if (!checkSomeValidation()) { return false; }">
        <a4j:support event="onchange" actionListener="#{myBean.doSomething}"/>
    </h:inputText>
    

    < <


    < org.ajax4jsf.ajax.SUPPORTxxx xxx < org.ajax4jsf.ajax.SUPPORTonchange

    <

    <a4j:support event="onchange"/> <h:inputText/>

    <

    HtmlAjaxSupport facet = (HtmlAjaxSupport) getParent().getFacet("org.ajax4jsf.ajax.SUPPORTonchange");
    if (facet != null) {
        facet.setOnsubmit("my Javascript code goes here");
    } else {
        getParent().setOnchange("my Javascript goes here");
    }