2017-02-06 2 views
0

Der p: commandLink oder p: commandButton im p: datagrids celleditor funktioniert nicht, wenn ich auf den BefehlLink klicke, leitet er mich zur selben Seite weiter. Im Celleditor findet der CommandLink seinen Zuhörer nicht, aber wenn ich ihn außerhalb des Celleditors nehme, funktioniert er perfekt.Der p: commandLink innerhalb des p: datagrids p: celleditor funktioniert nicht

<h:form id="form"> 

    <p:growl id="msgs" showDetail="true"/> 
        <p:dataTable id="project" var="car" value="#{editdeleteview.proj_rec}" rowKey="#{car.id}" selection="#{editdeleteview.selected_rec}" selectionMode="single" editable="true" style="margin-bottom:20px"> 
       <f:facet name="header"> 
        All Projects 
       </f:facet> 

       <p:ajax event="rowEdit" listener="#{editdeleteview.onRowEdit}" update=":form:msgs"/> 
       <p:ajax event="rowEditCancel" listener="#{editdeleteview.onRowCancel}" update=":form:msgs"/> 

       <p:column headerText="ID"> 

         <h:outputLabel value="#{car.id}" /> 


       </p:column> 
       <p:column headerText="Title"> 
       <p:commandLink ajax="false" action="#{editdeleteview.openObjects(car)}" ><h:outputText value="#{car.title}" /></p:commandLink> 
        <p:cellEditor> 
         <f:facet name="output"><p:commandLink ajax="false" action="#{editdeleteview.openObjects(car)}" ><h:outputText value="#{car.title}" /></p:commandLink></f:facet> 
         <f:facet name="input"><p:inputText value="#{car.title}" style="width:100%"/></f:facet> 
        </p:cellEditor> 
       </p:column>     
       <p:column headerText="Description"> 
        <p:cellEditor> 
         <f:facet name="output"><h:outputText value="#{car.description}" /></f:facet> 
         <f:facet name="input"><p:inputText value="#{car.description}" style="width:100%"/></f:facet> 
        </p:cellEditor> 
       </p:column> 
       <p:column headerText="Insertion Time"> 
        <p:cellEditor> 
         <f:facet name="output"><h:outputText value="#{car.insertionTimestamp}" /></f:facet> 
         <f:facet name="input"><p:inputText value="#{car.insertionTimestamp}" style="width:100%"/></f:facet> 
        </p:cellEditor> 
       </p:column> 
       <p:column headerText="Close Time"> 
        <p:cellEditor> 
         <f:facet name="output"><h:outputText value="#{car.closeTimestamp}" /></f:facet> 
         <f:facet name="input"><p:inputText value="#{car.closeTimestamp}" style="width:100%"/></f:facet> 
        </p:cellEditor> 
       </p:column> 



       <p:column headerText="Edit" style="width:50px"> 
        <p:rowEditor /> 
       </p:column> 
       <p:column headerText="Delete"> 
        <p:commandButton id="downloadLink1" value="Delete" ajax="false" class="btn btn-danger" icon="ui-icon-trash" action="#{editdeleteview.delete(car)}"> 

        </p:commandButton> 
       </p:column>     
      </p:dataTable>    

    </h:form> 

Der p: command außerhalb des celleditor unter dem Spaltentitel funktioniert perfekt, aber innerhalb des celleditor der command funktioniert nicht, die Zuhörer in der Bohne ist

public String openObjects(Project p) 
{ 


    HttpSession session = SessionUtils.getSession(); 
    session.setAttribute("project_id", p.getId()); 
    session.setAttribute("project_title", p.getTitle()); 
    //session.setAttribute("project_title", "Hamdan"); 
    System.out.println("EditView: "+session.getAttribute("project_title").toString()); 
    return "Objects.xhtml"; 

} 

Ich habe auch diese commandLink in cellEditor doesn't trigger action/actionListener versucht aber das hat nicht für mich funktioniert. Jede Hilfe wird sehr geschätzt.

+0

'nicht funktioniert' ist Art und Weise zu arbeiten. Eine Ihrer anderen Fragen ist als ein Duplikat von etwas markiert. Dieses Duplikat enthält Informationen zum weiteren Debuggen. Bitte. – Kukeltje

+0

@Kukeltje Ich habe sie auch ausprobiert, ich habe das Problem erwähnt, dass der Befehlslink im cellEditor unter der Spalte "title" seinen Listener nicht aufruft und nur auf der gleichen Seite ohne Fehler weiterleitet. –

+0

@Kukeltje der CommandLink außerhalb der CellEditor-Tag funktioniert einwandfrei, aber ich möchte, dass der CommandLink in CellEditor funktioniert. –

Antwort

0

Versuchen Sie immediate="true" auf Ihrer Befehlslinkkomponente. Werfen Sie einen Blick auf diese Erklärung von @BalusC:

Trying to understand immediate="true" skipping inputs when it shouldn't

+0

Die Befehlsschaltfläche außerhalb des cellEditors funktioniert, wenn dies also die Lösung ist, wäre es gut zu erklären, warum im Kontext eines cellEditors ** ** benötigt wird und ** nicht ** direkt davor. – Kukeltje

+0

Ich schlage es als eine Lösung vor, falls es funktioniert. Habe es selbst nicht probiert. Aber ich denke, das behebt das Problem, weil die Anfrage eines commandLinks innerhalb eines cellEditors durch die eigenen Ereignisse oder Anforderungen des cellEditors, die ich vermute, bedingt sein kann. @Kukeltje Fühlen Sie sich frei zu wählen, wenn die Antwort nicht den Regeln entspricht. Keine harten Gefühle. :) –

+1

Nein, kein Downvote, da ich nicht weiß, ob es hilft oder nicht. Aber wenn du es noch nicht versucht hast, solltest du lieber kurze Dinge wie das nächste Mal als Kommentar posten und es zu einer Antwort machen, wenn es hilft. Der 'process =" this "' in der Frage bezogen löst oder sollte lösen, was du beschreibst – Kukeltje

0

nur diese verwenden und es wird zu vage

<f:facet name="output"> 
          <p:commandLink action="#{editdeleteview.openObjects(car)}" 
           process="@this" immediate="true"> 
           <h:outputText value="#{car.title}" /> 
           <f:setPropertyActionListener 
            target="#{editdeleteview.selected_rec}" value="#{car}" /> 
          </p:commandLink> 
         </f:facet> 
Verwandte Themen