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

时间:2015-01-22 16:40:21

标签: ajax jsf jsf-2 primefaces

我遇到了一个似乎已在这里解决的问题。 我想在示例here中使用订单列表。 但它根本不起作用。我在示例中列出了<p:ajax>的顺序列表。

即,我有一个错误:

  

javax.servlet.ServletException:/resources/abc/rankingAnswer.xhtml @ 21,85 <p:ajax>无法将行为附加到非ClientBehaviorHolder父级

我在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;
    }
}

1 个答案:

答案 0 :(得分:2)

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

  

Pojo支持剪辑效果,字幕,自定义内容,重新排序控件和事件(自v5.1.5

同样issue 4501(强调我的):

  

     
      
  • 选择
  •   
  • 取消选择
  •   
  • 重排序
  •   
     

目标是5.1.5精英和5.2社区