【问题标题】:ValueChangeListener for a particular item in a Collection in a <a4j:repeat> tag<a4j:repeat> 标记中 Collection 中特定项目的 ValueChangeListener
【发布时间】:2016-03-23 15:57:12
【问题描述】:

如何通过标准决策在List&lt;Driver&gt; 中设置特定Driver 的字段?没有我自己的属性:

<f:attribute name="hashCode" value="#{driver.hashCode()}"/>

Java BackBean:

public class BackBean {
    List<Driver> drivers;

    public List<Driver> getDrivers() {
        List<Driver> drivers = new ArrayList<Driver>();
        ...
        return drivers;
    }

    public void licenceReplacedCheckBoxChanged(ValueChangeEvent e) {
        Boolean driverDocChanged = (Boolean) e.getNewValue();

        int hashCode = (Integer) e.getComponent().getAttributes().get("hashCode");

        for (Driver buff : getDrivers()) {
            boolean findDriver = ( buff.hashCode() == hashCode );
            if (findDriver) {
                buff.setDocumentReplaced(driverDocChanged);
                buff.makeChangeDriver();
            }
        }
    }
}

xhtml:

<a4j:repeat value="#{backBean.drivers}" var="driver" rowKeyVar="rowDriver" id="drivers">
...
    <div class="controls one-control-group">
        <h:selectBooleanCheckbox value="#{driver.documentReplaced}"                 
            valueChangeListener="#{backBean.licenceReplacedCheckBoxChanged}">
            <f:attribute name="hashCode" value="#{driver.hashCode()}"/>
            <a4j:ajax execute="@this" render="..." />
        </h:selectBooleanCheckbox>
    </div>
...
</a4j:repeat>

【问题讨论】:

    标签: jsf richfaces valuechangelistener


    【解决方案1】:

    只需在&lt;a4j:ajax listener&gt; 中调用所需的方法。

    <h:selectBooleanCheckbox value="#{driver.documentReplaced}">                 
        <a4j:ajax execute="@this" listener="#{driver.makeChangeDriver}" render="..." />
    </h:selectBooleanCheckbox>
    

    另见:


    尽管如此,您可以在尝试中只传递 #{driver} 本身而不是其哈希码。

    <f:attribute name="driver" value="#{driver}" />
    

    这只是一个不必要的弯路。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-18
      • 1970-01-01
      • 2017-03-11
      • 2021-09-24
      • 2012-07-10
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      相关资源
      最近更新 更多