Exception that since Fieldset cannot be passed to UIData

Trying to develop drag and drop functionality. The fieldSet fields in the layout need to be dragged around and simulate the user as if they were dropped into another layout. Below is the xhtml code for it: -

<h:head>
    <script type="text/javascript">
        function handleDrop(event, ui) {
            var dropped = ui.draggable;

            dropped.fadeOut('fast');
        }
    </script>

</h:head>
<h:body>
 <h:form>
    HI
    <h1>Primefaces Basic Config</h1>


    <p:layout style="min-width:400px;min-height:200px;">

        <p:layoutUnit id="first" position="west">

            <p:fieldset id="ppl" legend="Builder" toggleable="true" toggleSpeed="500" style="width:300px">

                    <h:panelGrid columns="2" cellpadding="5">
                        <h:outputText value="Bla bla bla"></h:outputText>
                    </h:panelGrid>

            </p:fieldset>

            <p:draggable for="ppl" revert="true" />

        </p:layoutUnit>


        <p:layoutUnit id="second" position="center">

                 <p:tabView id="dropdownpanel">
                    <p:tab title="Edit">
                        <h:panelGrid columns="2" cellpadding="10">
                            <h:outputText
                                value="Add question details" />
                        </h:panelGrid>
                    </p:tab>
                    <p:tab title="Option">
                        <h:panelGrid columns="2" cellpadding="10">
                            <h:outputText value="addtional options required" />
                        </h:panelGrid>
                    </p:tab>
                    <p:tab title="Logic">
                        <h:panelGrid columns="2" cellpadding="10">
                            <h:outputText value="addd logic to this tab" />
                        </h:panelGrid>
                    </p:tab>
                 </p:tabView>

        </p:layoutUnit>

        <p:droppable for="second" tolerance="touch"  datasource="ppl" onDrop="handleDrop" >
            <p:ajax update="first second" />  
        </p:droppable>

    </p:layout>

  </h:form>
</h:body>

          </h:form>

      

Below is a screenshot of what I am trying to achieve when the field builder style can be dragged into the edit box: -

enter image description here

But when I try to drag BUILDER then after running Exception: -

15: 53: 05,497 INFO [Javax.enterprise.resource.webcontainer.jsf.context] (http-0.0.0.0-0.0.0.0-8081-1) java.lang.ClassCastException: org.primefaces.component.fieldset.Fieldset not can be dropped javax.faces.component.UIData: java.lang.ClassCastException: org.primefaces.component.fieldset.Fieldset can not be dropped javax.faces.component.UIData at org.primefaces.component.dnd.Droppable.findDatasource ( Droppable.java:231) [primefaces-4.0.jar: 4.0] at org.primefaces.component.dnd.Droppable.queueEvent (Droppable.java:189) [primefaces-4.0.jar: 4.0] at org.primefaces.component. behavior.ajax.AjaxBehaviorRenderer.decode (AjaxBehaviorRenderer.java:44) [primefaces-4.0.jar: 4.0] in javax.faces.component.behavior.ClientBehaviorBase.decode (ClientBehaviorBase.javass:132) -2.0.1.Final.jar: 2.0.1.Final] in org.primefaces.renderkit.CoreRenderer.decodeBehaviors (CoreRenderer.java:395) [primefaces-4.0.jar: 4.0] in org.primefaces.component.dnd.DroppableRenderer.decode (DroppableRenderer.java:32) [primefaces-4.0.jar: 4.0] in javax. faces.component.UIComponentBase.decode (UIComponentBase.java:787) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar: 2.0.1.Final] at javax.faces.component.UIComponentBase.processDecodes (UIComponentBase. java: 1181) [JBoss-JSF-api_2.1_spec-2.0.1.Final.jar: 2.0.1.Final]0.1.Final.jar: 2.0.1.Final]0.1.Final.jar: 2.0.1.Final]

And I have no clue for a solution.

+3


source to share


1 answer


The attribute datasource

on the element p:droppable

must refer to UIData. Fieldset is not a UIData. If you look at the UIData Javadoc you can see that HtmlDatatable is a well-known subclass

I had the same problem and resolved by referencing mine datatable

instead fieldset

. In your case, you are using h:panelGrid

, so change

   <h:panelGrid columns="2" cellpadding="5" >

      



for data, give it an id. Say "datasrc1". And change your droppable datasource to:

   <p:droppable for="second" tolerance="touch"  datasource="datasrc1" onDrop="handleDrop" >

      

+1


source







All Articles