![](/img/trans.png)
[英]How to pass object from action class to JSP using Bean in Struts2?
[英]How to pass the values in the row that i want to delete/edit to the action class from jsp in struts2 using display tag?
我想在顯示標簽中使用struts2創建edit,delete鏈接。 這是我的jsp代碼
<%@ 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>
這是我的動作課:
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();
}
}
如何獲取我從jsp頁面刪除到ContactAction類中的deleteRecord()方法的行中的屬性值? 這里的聲明
System.out.println("ID IS "+contact.getId());
給出輸出:ID IS為null
請提出一些解決方案。
謝謝
這是聯絡豆
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;
}
}
您可以使用
#attr.uidOfYourTable.property
在你的情況下
<display:column media="html" title="edit" style="text-align:center">
<a href="deleteLink?id=<s:property value="#attr.sr.id"/>">edit</a>
</display:column>
(忽略了您的“編輯”鏈接指向一個DeleteLink Action的事實:)
這是文檔中關於display:table標簽的內容:
id:參見“ uid”。
uid:用於標識此表的唯一ID。 代表當前行的對象也以該名稱添加到pageContext中,以便您可以使用$ {uid}在列主體中引用它 。 您也可以使用uid_rowNum引用當前行號。 同一頁面中的兩個表不能具有相同的ID(分頁和排序會同時影響這兩個表)。 如果未指定“ htmlId”,則將相同的值用於生成表的html id。
(強調我的)
因此,請在標簽中的id
和uid
之間選擇(並且不要同時指定兩次id),而不要同時使用二者,然后(假設您保留uid),請使用$ {sr}來引用當前元素:
<s:param name="id1" value="${sr.id}" />
這是答案,我們可以使用<s:bean>
實例化bean類,然后<s:param>
充當setter方法,可以使用bean類Contact的getter方法在操作類中檢索其值。
<display:column media="html"
title="Delete"
style="text-align:center">
<s:url id="deleteUrl" action="deleteLink">
<s:bean name="net.viralpatel.contact.model.Contact"></s:bean>
<s:param name="id" value="#attr.row.id"></s:param>
<s:param name="firstName" value="#attr.row.firstName"></s:param>
</s:url>
<s:a href="%{deleteUrl}">
Delete
</s:a>
</display:column>
你可以這樣寫:
<display:column property="status" title="Status" sortable="true" paramId="aid" paramProperty="aid" href="/MsgSystem/adminread" />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.