I'm trying to use drag and drop component of primefaces. Please image for problem clarification :-
Page has got drag-gable area (Datagrid) having panels. From where panels which are free to move are dropped to Drop-able area which is again datagrid. On drop an ajax event is called and action is supposed to take place. But instead of it an exception is thrown before ajax event is fired. (See stacktrace). Even if you try to use datatable or panel component in droppable area same exception is thrown. I tried resolving this and found something related to row editing. Somewhere i found implementing Hashcode and equals methods but nothing worked. Below is the complete stacktrace and code. Any sort of help will highly appreciable since i'm stucked to this point.
UI Page:
<ui:composition xmlns="http://ift.tt/lH0Osb"
xmlns:ui="http://ift.tt/KsEgXx"
xmlns:f="http://ift.tt/HcrI1S"
xmlns:h="http://ift.tt/HjFrZb"
xmlns:c="http://ift.tt/QfKAz6"
xmlns:p="http://ift.tt/HjFrZc">
<h:form id = "meraform">
<p:fieldset>
<p:messages id="messages" showDetail="true" autoUpdate="false"
closable="true" />
<h:panelGrid columns="2">
<p:outputLabel value="#{homebean.testString}" />
</h:panelGrid>
</p:fieldset>
<p:fieldset id="optionSetList" legend="Builder" toggleable="true" toggleSpeed="500">
<p:outputPanel id="dropFrom" autoUpdate="true">
<p:dataGrid id="optionSetLIST1" value="#{homebean.copyfetchedSysOptionSetResponseTO}" columns="2" var="mbuilder">
<p:panel id="pnl" header="#{mbuilder.optionType}">
<h:outputText value="#{mbuilder.description}" />
</p:panel>
<p:draggable for="pnl" helper="clone" revert="true" />
</p:dataGrid>
</p:outputPanel>
</p:fieldset>
<p:dataGrid id="dropTarget">
<p:outputPanel id="dropArea" autoUpdate="true">
<h:outputText value="Add New Question +" style="font-size:24px;" />
</p:outputPanel>
</p:dataGrid>
<p:droppable for="dropTarget" tolerance="touch" datasource="optionSetLIST1">
<p:ajax listener="#{homebean.optionSetDroppedAction}" update="dropFrom,:meraform:dropTarget:dropArea" />
</p:droppable>
</h:form>
</ui:composition>
HomeBean's method on ajax call :-
private List<SysOptionSetResponseTO> standingOptionSetResponseTO;
public void optionSetDroppedAction(DragDropEvent ddEvent) {
System.out.println("Event Intialization called ***************");
String value=ddEvent.getData().toString();
if(!standingOptionSetResponseTO.contains(value)){
standingOptionSetResponseTO.add((SysOptionSetResponseTO)ddEvent.getData());
}
}
standingOptionSetResponseTO is initialized, so don't worry about it.
SysOptionSetResponseTO Class :
public class SysOptionSetResponseTO implements IResponseTransferObject{
/**
*
*/
private static final long serialVersionUID = -5949109830815169235L;
private Integer sysOptionSetID;
private String optionType;
private String description;
public SysOptionSetResponseTO(){
}
public Integer getSysOptionSetID() {
return sysOptionSetID;
}
public void setSysOptionSetID(Integer sysOptionSetID) {
this.sysOptionSetID = sysOptionSetID;
}
public String getOptionType() {
return optionType;
}
public void setOptionType(String optionType) {
this.optionType = optionType;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result
+ ((description == null) ? 0 : description.hashCode());
result = prime * result
+ ((optionType == null) ? 0 : optionType.hashCode());
result = prime * result
+ ((sysOptionSetID == null) ? 0 : sysOptionSetID.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (!(obj instanceof SysOptionSetResponseTO))
return false;
SysOptionSetResponseTO other = (SysOptionSetResponseTO) obj;
if (description == null) {
if (other.description != null)
return false;
} else if (!description.equals(other.description))
return false;
if (optionType == null) {
if (other.optionType != null)
return false;
} else if (!optionType.equals(other.optionType))
return false;
if (sysOptionSetID == null) {
if (other.sysOptionSetID != null)
return false;
} else if (!sysOptionSetID.equals(other.sysOptionSetID))
return false;
return true;
}
}
Exception Thrown :-
12:09:39,612 INFO [javax.enterprise.resource.webcontainer.jsf.context] (http--0.0.0.0-8080-2) javax.faces.model.NoRowAvailableException: javax.faces.model.NoRowAvailableException at javax.faces.model.ListDataModel.getRowData(ListDataModel.java:150) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final] at javax.faces.component.UIData.getRowData(UIData.java:371) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final] at org.primefaces.component.dnd.Droppable.queueEvent(Droppable.java:193) [primefaces-5.1.jar:5.1] at org.primefaces.behavior.ajax.AjaxBehaviorRenderer.decode(AjaxBehaviorRenderer.java:47) [primefaces-5.1.jar:5.1] at javax.faces.component.behavior.ClientBehaviorBase.decode(ClientBehaviorBase.java:132) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final] at org.primefaces.renderkit.CoreRenderer.decodeBehaviors(CoreRenderer.java:495) [primefaces-5.1.jar:5.1] at org.primefaces.component.dnd.DroppableRenderer.decode(DroppableRenderer.java:31) [primefaces-5.1.jar:5.1] at 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] at com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback.visit(PartialViewContextImpl.java:506) [jsf-impl-2.1.7-jbossorg-2.jar:] at com.sun.faces.component.visit.PartialVisitContext.invokeVisitCallback(PartialVisitContext.java:183) [jsf-impl-2.1.7-jbossorg-2.jar:] at javax.faces.component.UIComponent.visitTree(UIComponent.java:1612) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final] at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final] at javax.faces.component.UIForm.visitTree(UIForm.java:371) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final] at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final] at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final] at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final] at com.sun.faces.context.PartialViewContextImpl.processComponents(PartialViewContextImpl.java:376) [jsf-impl-2.1.7-jbossorg-2.jar:] at com.sun.faces.context.PartialViewContextImpl.processPartial(PartialViewContextImpl.java:252) [jsf-impl-2.1.7-jbossorg-2.jar:] at org.primefaces.context.PrimePartialViewContext.processPartial(PrimePartialViewContext.java:60) [primefaces-5.1.jar:5.1] at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:931) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final] at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78) [jsf-impl-2.1.7-jbossorg-2.jar:] at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) [jsf-impl-2.1.7-jbossorg-2.jar:] at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) [jsf-impl-2.1.7-jbossorg-2.jar:] at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:] at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:105) [primefaces-5.1.jar:5.1] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:] at org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:62) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:] at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:] at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:897) [jbossweb-7.0.13.Final.jar:] at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:626) [jbossweb-7.0.13.Final.jar:] at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:2039) [jbossweb-7.0.13.Final.jar:] at java.lang.Thread.run(Thread.java:744) [rt.jar:1.7.0_45]
Aucun commentaire:
Enregistrer un commentaire