OrderList <p:ajax> 无法将行为附加到非 ClientBehaviorHolder 父级

OrderList <p:ajax> Unable to attach behavior to non-ClientBehaviorHolder parent

我遇到了一个似乎已在此处解决的问题。 我想使用示例 here 中的订单列表。 但它根本不起作用。我在订单列表中嵌套了 <p:ajax>,就像在示例中一样。

也就是说,我有一个错误:

javax.servlet.ServletException: /resources/abc/rankingAnswer.xhtml @21,85<p:ajax> Unable to attach behavior to non-ClientBehaviorHolder parent

我在 pom.xml 中的 Primefaces 配置是

        <!-- prime faces -->
    <primefaces.version>5.1</primefaces.version>
    <primefaces.themes.version>1.0.10</primefaces.themes.version>

我的观点是

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:composite="http://java.sun.com/jsf/composite"
  xmlns:p="http://primefaces.org/ui"
  xmlns:f="http://java.sun.com/jsf/core"
  xmlns:ui="http://java.sun.com/jsf/facelets"
  xmlns:h="http://java.sun.com/jsf/html">

    <composite:interface>
        <composite:attribute name="question" />
    </composite:interface>

    <composite:implementation>

    <ui:decorate template="answerDecorator.xhtml">
        <ui:define name="component">
            <p:orderList value="#{cc.attrs.question.possibleAnswers}" var="answer" itemLabel="#{answer.text}" itemValue="#{answer}" controlsLocation="left" editable="true" >
                <f:facet name="caption">#{msg['survey.default.makeOrder']}</f:facet>
                <p:ajax event="reorder" listener="#{cc.attrs.question.onReorder}" />
                <p:column>
                    <h:outputText value="#{answer.text}" />
                </p:column>
            </p:orderList>
        </ui:define>
    </ui:decorate>

</composite:implementation>

</html>

我的模特是

public class RankingQuestionDTO extends AbstractQuestionDTO implements Serializable {

    private ArrayList<RankingAnswerDTO> possibleAnswers;
    private boolean randomizeAnswers;
    private String text;

    public RankingQuestionDTO() {
        super(QuestionType.RANKING);
        this.text = MessageUtils.getBundle("survey.default.text");
        this.possibleAnswers = new ArrayList<>();
        this.possibleAnswers.add(new RankingAnswerDTO(MessageUtils.getBundle("survey.default.text")));
        this.possibleAnswers.add(new RankingAnswerDTO(MessageUtils.getBundle("survey.default.text")));
        this.randomizeAnswers = true;
    }

    public void onSelect(SelectEvent event) {
        System.out.print(event.getObject().toString());
    }

    public void onUnselect(UnselectEvent event) {
        System.out.print(event.getObject().toString());
    }

    public void onReorder() {

    }


    public void addEmptyPossibleAnswer()
    {
        this.possibleAnswers.add(new RankingAnswerDTO(MessageUtils.getBundle("survey.default.text")));
    }

    public ArrayList<RankingAnswerDTO> getPossibleAnswers() {
        return possibleAnswers;
    }


    public String getText() {
        return text;
    }

    public void setPossibleAnswers(ArrayList<RankingAnswerDTO> possibleAnswers) {
        this.possibleAnswers = possibleAnswers;
    }

    public void setRandomizeAnswers(boolean randomizeAnswers) {
        this.randomizeAnswers = randomizeAnswers;
    }

    public boolean getRandomizeAnswers() {
        return randomizeAnswers;
    }

    public void setText(String text) {
        this.text = text;
    }
}

PrimeFaces Showcase 有答案(强调我的):

Pojo Support with Clip Effect, Captions, Custom Content, Reorder Controls and Events (since v5.1.5)

issue 4501一样(强调我的):

Added

  • select
  • unselect
  • reorder

Target is 5.1.5 Elite and 5.2 Community.