2015-09-21 1 views
0

Я хочу знать, как получить динамически генерируемое значение строки таблицы (например, empp_id) при нажатии кнопки отправки, которая генерируется для каждой строки динамически.Как получить значение генерируемого значения строки для другого действия при нажатии кнопки сгенерированной кнопки отправки

Ниже приведен мой код. Я использовал для создания каждой строки и кнопки отправки для каждой строки. Я не знаю, как использовать кнопку отправки, чтобы получить и передать значение столбца «id» для другого действия.

Struts.xml

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" 
"http://struts.apache.org/dtds/struts-2.3.dtd"> 
<struts> 
    <constant name="struts.enable.DynamicMethodInvocation" value="false" /> 
    <constant name="struts.devMode" value="false" /> 

    <package name="default" namespace="/" extends="struts-default"> 


     <action name="edit" class="com.ojt.database.EditUserAction" method="execute"> 
      <result name="success">edituser.jsp</result> 
      <result name="error"></result> 
     </action> 

</struts> 

EditUserAction.java

package com.ojt.database; 

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 
import java.util.ArrayList; 
import java.util.List; 

import com.opensymphony.xwork2.ActionSupport; 

@SuppressWarnings("serial") 
public class EditUserAction extends ActionSupport { 
    List<User> liUser=null; 


    public List<User> getLiUser() { 
     return liUser; 
    } 


    public void setLiUser(List<User> liUser) { 
     this.liUser = liUser; 
    } 


    @Override 
    public String execute() throws Exception { 
     Connection conn; 
     String ret = "error"; 
     try { 

      String url = "jdbc:mysql://localhost:3306/test"; 
      Class.forName("com.mysql.jdbc.Driver"); 
      conn = DriverManager.getConnection(url, "root", "root"); 
      String sql = "SELECT * FROM user"; 
      PreparedStatement ps = conn.prepareStatement(sql); 
      ResultSet rs = ps.executeQuery(); 
      liUser=new ArrayList<User>(); 
      while (rs.next()) { 
       User user = new User(); 
       user.setId(rs.getInt(1)); 
       user.setName(rs.getString(2)); 
       user.setPassword(rs.getString(3)); 
       liUser.add(user); 
      } 
      conn.close(); 
      ret = "success"; 
      System.out.println(ret); 
     } catch (Exception e) { 
      e.printStackTrace(); 
      ret = "error"; 
      System.out.println(ret); 
     } 
     return ret; 
    } 

} 

edituser.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<%@ taglib prefix="s" uri="/struts-tags"%> 
<%@ taglib prefix="display" uri="http://displaytag.sf.net/el"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Edit</title> 
</head> 
<body> 
    <table cellpadding="20" align="center"> 
     <tr> 
      <th>Id</th> 
      <th>Name</th> 
      <th>Password</th> 

     </tr> 

     <s:iterator value="liUser"> 
      <tr> 
       <td><s:property value="id" /></td> 

       <td><s:property value="name" /></td> 
       <td><s:property value="password" /></td> 
       <td><s:submit value="Edit" theme="simple" action="review" method="POST"/></td> 
      </tr> 
     </s:iterator> 
    </table> 

</body> 
</html> 

мне нужна ваша помощь, пожалуйста. Я не могу идти дальше, я застрял здесь.

ответ

0
  1. Когда вы используете <s:property/>, вы не создаете тег формы, а просто текст.
    Чтобы отправить что-то напечатанное с <s:property/>, use an <s:hidden/> в связи с этим.

  2. Чтобы отправить список объектов из JSP, вам необходимо использовать IteratorStatus object to specify an index.

  3. Вы даже не пользуетесь формой. Вам нужна форма для POST-кода в стандартном, не-AJAX-способе.

  4. Вам нужны два метода действий или два действия: один для отображения данных, а другой - для редактирования.
    В вашем методе execute() вы каждый раз инициализируете свой список:
    liUser=new ArrayList<User>();,
    так что тот, который сойдет с страницы, будет всегда утерян.

Вы находитесь в глубокой воде. Я предлагаю вам остановиться на минутку и внимательно посмотреть на HTML, HTTP, Struts2 и его теги, иначе вы скоро разочаруетесь.

+1

Спасибо за ваш совет @Andrea. –

+1

Я исправляю этот код, как вы упомянули ..

 Смежные вопросы

  • Нет связанных вопросов^_^