【问题标题】:t:selectOneRadio with a4j:ajax no javascript renderedt:selectOneRadio 与 a4j:ajax 没有 javascript 呈现
【发布时间】:2012-11-03 16:05:27
【问题描述】:

我正在创建一个带有红色按钮的动态形式,在选择不同的行时需要更新购物车的每一行:

<t:inputText id="test">
    <f:ajax event="click" onevent="alert('3');" />
</t:inputText>

<t:selectOneRadio id="rbtnQuantity" value="#{orderActions.selectedQuantity}" layout="spread">
    <f:selectItems value="#{orderActions.quantities}" var="item" />
    <f:converter converterId="integerConverter" />
    <a4j:ajax event="click" oncomplete="renderPrices();" />
</t:selectOneRadio>

<rich:dataTable id="tblQuantities" styleClass="quantities" value="#{orderActions.formatQuantityPrices}" var="item" rowKeyVar="row">
    <h:column>
        <t:radio id="rbtnQuantity" for=":form:rbtnQuantity" index="#{row}" />
    </h:column>

    <h:column>
        <h:outputText value="#{item.quantity}" />
    </h:column>

    <h:column>
        <h:outputText value="#{item.price}">
            <f:convertNumber type="currency" currencySymbol="$" />
        </h:outputText>
    </h:column>

    <h:column>
        <h:outputText value="#{item.price / item.quantity}">
            <f:convertNumber type="currency" currencySymbol="$" />
        </h:outputText>/u
    </h:column>
</rich:dataTable>

问题是没有单选按钮触发 ajax 事件,即使在结果代码中也没有呈现 javascript 代码:

<table id="form:tblQuantities" class="rf-dt quantities">
    <colgroup span="4">
    </colgroup>
    <tbody id="form:tblQuantities:tb" class="rf-dt-b">
        <tr id="form:tblQuantities:0" class="rf-dt-r rf-dt-fst-r">
            <td id="form:tblQuantities:0:j_idt296" class="rf-dt-c">
                <label><input id="form:tblQuantities:0:rbtnQuantity" type="radio" name="form:rbtnQuantity" checked="checked" value="25" />&#160;25</label>
            </td>
            <td id="form:tblQuantities:0:j_idt297" class="rf-dt-c">25</td>
            <td id="form:tblQuantities:0:j_idt309" class="rf-dt-c">118,75 $</td>
            <td id="form:tblQuantities:0:j_idt310" class="rf-dt-c">4,75 $/u</td>
        </tr>
[more similar rows...]

我还在顶部添加了一个 t:inputText,看看是不是 t:selectOneRadio 的使用有问题,但不是。

我正在使用 Mojarra、RichFaces 4.2.1、Tomahawk 1.1.14。

【问题讨论】:

  • 我不确定您是否可以将&lt;a4j:ajax 用于非richfaces 组件,请尝试f:ajax
  • 我现在有这个问题!从那以后你还尝试过其他什么吗?
  • 我已经用我的最终代码更新了我的答案,此后一直使用。

标签: jsf jsf-2 richfaces ajax4jsf tomahawk


【解决方案1】:

由于我无法将 a4j:ajax 或 f:ajax 与 t:selectOneRadio 一起使用,因此我使用了这个解决方法:

<a4j:jsFunction name="changeQuantity" oncomplete="renderPrices();">
    <a4j:param assignTo="#{orderActions.selectedQuantity}" name="quantity" />
</a4j:jsFunction>

<t:selectOneRadio onclick="quantity = jQuery(this).val();changeQuantity(quantity);" id="rbtnQuantity" value="#{orderActions.selectedQuantity}" layout="spread">
    <f:selectItems value="#{orderActions.quantities}" var="item" />
    <f:converter converterId="integerConverter" />
</t:selectOneRadio>

它工作正常,但如果有人找到正确的解决方案或我更愿意解决问题。

编辑:

这是最终使用的代码:

<a4j:jsFunction name="changeQuantity" oncomplete="renderPrices();">
    <a4j:param assignTo="#{orderActions.selectedQuantity}" name="quantity" />
</a4j:jsFunction>

# Each row of the table :

<input type="radio" name="quantity" value="#{item.quantity}" checked="#{orderActions.selectedQuantity eq item.quantity ? 'checked' : ''}" onclick="changeQuantity(#{item.quantity});" />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-27
    • 2019-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-28
    相关资源
    最近更新 更多