मेरे पास दो पंक्तियों के साथ एक डेटा तालिका है और मेरे पास एक कॉलम है जहां मेरे पास एक साधारण बटन वाला एक फॉर्म है जो उस पंक्ति में ऑब्जेक्ट को हटा देता है।प्राइमफ़ेस डेटा तालिका में ऑब्जेक्ट के लिए डिलीट बटन कैसे डालें?
तो पहला काम कर संस्करण:
<h:dataTable value="#{actorTableBackingBean.allActors}"
var="actor" styleClass="table table-bordered">
<h:column headerText="Actor Name" sortBy="#{actor.firstName}">
<h:outputText value="#{actor.firstName}"/>
</h:column>
<h:column headerText="Actor Detail">
<h:form>
<h:commandButton value="Delete Actor"
styleClass="btn btn-primary"
action="#{actorTableBackingBean.deleteActor(actor.actorId)}"/>
</h:form>
</h:column>
</h:dataTable>
और यही deleteActor विधि की तरह लग रहा है:
public String deleteActor(String id){
removeActorWithId(id);
return "/allActors.xhtml";
}
private void removeActorWithId(String id){
int idk = Integer.parseInt(id);
for(Actor a:allActors){
if(a.getActorId() == idk){
allActors.remove(a);
return;
}
}
}
तो यह वास्तव में अपेक्षा के अनुरूप के रूप में यह है काम करता है।
हालांकि, जब मैं प्राइमफेस की पेजिनेशन डेटा तालिका का उपयोग करता हूं जैसा कि here में दिखाया गया है, तो हटाएं बटन केवल दूसरे मामले में पहली पंक्ति के लिए और केवल पहली बार काम करता है। जब मैं अन्य पंक्तियों के लिए "हटाएं" बटन पर क्लिक करता हूं, तो कुछ भी नहीं होता है। कारण क्या हो सकता है? DataTable कड़ी में देखा है और ज की तरह सब कुछ की जगह के रूप में: पी DataTable: DataTable और पी: स्तंभ आदि ...
आपके बैकिंग बीन का क्या दायरा है? – Sonic
@ सोनिक हैलो, इसमें RequestScoped है। –
अपने फॉर्म को डेटाटेबल के बाहर ले जाएं। – 8bitjunkie