Wie übergibt man die Werte in der Zeile möchte ich löschen/Bearbeiten, um die action-Klasse aus einer jsp in struts2 mit display-tag?
Möchte ich erstellen, Bearbeiten , löschen-link im display-tag mit struts2. Dies ist meine jsp-code
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@taglib uri="http://displaytag.sf.net" prefix="display" %>
<html>
<head>
<title>Contact Manager - display tag Example</title>
<link href="css/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<display:table name="contactList" requestURI="" pagesize="10" export="true" cellpadding="1" uid="sr" cellspacing="1" size="50"
defaultorder="ascending" sort="list" style="width:850"
id="row">
<display:column property="id" title="serial no" sortable="true" />
<display:column property="lastName" title="TV Show" sortable="true" />
<display:column property="firstName" title="User Name" sortable="true" />
<display:column property="emailId" title="Email Id" sortable="true" />
<display:column media="html"
title="Delete"
style="text-align:center">
<s:url id="deleteUrl" action="deleteLink">
<s:param name="id1" value="#attr.row.id" />
</s:url>
<s:a href="%{deleteUrl}">
Delete
</s:a>
</display:column>
<display:column media="html"
title="edit"
style="text-align:center">
<a href="deleteLink?id=<s:property value="id"/>">edit</a>
</display:column>
<display:setProperty name="export.excel.filename" value="ActorDetails.xls"/>
<display:setProperty name="export.pdf.filename" value="ActorDetails.pdf"/>
<display:setProperty name="export.pdf" value="true" />
</display:table>
</body>
</html>
dies ist meine Aktion Klasse:
package net.viralpatel.contact.view;
import java.util.List;
import net.viralpatel.contact.controller.ContactManager;
import net.viralpatel.contact.model.Contact;
import com.opensymphony.xwork2.ActionSupport;
public class ContactAction extends ActionSupport implements ModelDriven<Contact>,Preparable {
private static final long serialVersionUID = 9149826260758390091L;
private Contact contact;
private List<Contact> contactList;
private ContactManager linkController;
public ContactAction() {
linkController = new ContactManager();
}
public String getRecords()
{
contactList =linkController.lSist();
return SUCCESS;
}
public String deleteRecord()
{
System.out.println(contact.getId());
return SUCCESS;
}
public Contact getContact() {
return contact;
}
public List<Contact> getContactList() {
return contactList;
}
public void setContact(Contact contact) {
this.contact = contact;
}
public void setContactList(List<Contact> contactsList) {
this.contactList = contactsList;
}
@Override
public Contact getModel() {
return contact;
}
@Override
public void prepare() throws Exception {
//TODO Auto-generated method stub
contact = new Contact();
}
}
Wie bekomme ich die Werte der Attribute in der Zeile, die ich löschen von der jsp-Seite an den deleteRecord () - Methode in der ContactAction Klasse??
HIER wird die Aussage
System.out.println("ID IS "+contact.getId());
gibt einen ausgegeben: - ID IST null
Bitte schlagen einige Lösung.
Dank
dies ist der Kontakt-bean
package net.viralpatel.contact.model;
import java.io.Serializable;
import java.sql.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="Contacts")
public class Contact implements Serializable{
private static final long serialVersionUID = -8767337896773261247L;
private Long id;
private String firstName;
private String lastName;
private String emailId;
private String cellNo;
private Date birthDate;
private String website;
private Date created;
@Id
@GeneratedValue
@Column(name="id")
public Long getId() {
return id;
}
@Column(name="firstname")
public String getFirstName() {
return firstName;
}
@Column(name="lastname")
public String getLastName() {
return lastName;
}
@Column(name="email_id")
public String getEmailId() {
return emailId;
}
@Column(name="cell_no")
public String getCellNo() {
return cellNo;
}
@Column(name="birthdate")
public Date getBirthDate() {
return birthDate;
}
@Column(name="website")
public String getWebsite() {
return website;
}
@Column(name="created")
public Date getCreated() {
return created;
}
public void setId(Long id) {
this.id = id;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public void setEmailId(String emailId) {
this.emailId = emailId;
}
public void setCellNo(String cellNo) {
this.cellNo = cellNo;
}
public void setBirthDate(Date birthDate) {
this.birthDate = birthDate;
}
public void setCreated(Date created) {
this.created = created;
}
public void setWebsite(String website) {
this.website = website;
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie
in Ihrem Fall
"(ohne die Tatsache, dass das Edit-link verweist auf eine DeleteLink Aktion :o)
Hier ist, was die Dokumentation sagt über die display:table-tag:
(Hervorhebung von mir)
Also wählen zwischen
id
unduid
(und nicht geben Sie die id zweimal, als Sie tun), die in Ihren tag, statt mit beiden, und dann (vorausgesetzt, Sie halten uid), verwenden Sie ${sr} der Bezug zu dem aktuellen element:#sr.id
Hier ist die Antwort, die wir verwenden können, die
<s:bean>
zu instanziieren der bean-Klasse und dann<s:param>
wirkt wie die Set-Methode, deren Werte abgefragt werden können, in der action-Klasse mit getter-Methoden der bean-Klasse Kontaktkönnen Sie schreiben, wie: