我正在使用隐藏输入类型来设置值并使用 request.getParameter() 在另一个页面中获取值,但它总是返回“null”

Posted

技术标签:

【中文标题】我正在使用隐藏输入类型来设置值并使用 request.getParameter() 在另一个页面中获取值,但它总是返回“null”【英文标题】:I am using hidden input type to set value and using request.getParameter() to get the value in another page but it is always returning “null” 【发布时间】:2017-07-22 08:49:01 【问题描述】:

我正在使用隐藏输入类型来设置值并使用 request.getParameter() 在另一个页面中获取值,但它总是返回“null”。 为什么它返回空值? 第一页:-

<%  
try  
       Class.forName("org.postgresql.Driver");  
       Connection con = DriverManager.getConnection("jdbc:postgresql://localhost:5432/passkey_database","postgres","4457");  
       PreparedStatement ps=con.prepareStatement("select * from visitor_table");  
       ResultSet rs=ps.executeQuery();  
       ResultSetMetaData metaData=rs.getMetaData();  
       while(rs.next())  

%>  
<tr>
 <td>  
  <input type="text" name="name" value="<%=rs.getString("visitor_name")%>">  
  <a href="permissionform.jsp"> <%=rs.getString("visitor_name")%> </a>  
</td>
<%for(int i = 2; i<=metaData.getColumnCount();i++) %>  
<td>  
  <%= rs.getString(i)%>  
</td>
<%       %>     
</tr>
<%  
catch (Exception e)   
e.printStackTrace();  

第二页:-

 <%

   String name=request.getParameter("name");
    out.println(name);
   try
       Class.forName("org.postgresql.Driver");
        Connection con = DriverManager.getConnection("jdbc:postgresql://localhost:5432/passkey_database","postgres","4457");
            PreparedStatement ps=con.prepareStatement("select * from visitor_table where visitor_name=?");
            ps.setString(1,name);
            ResultSet rs=ps.executeQuery();
            while(rs.next())

  %>

【问题讨论】:

隐藏字段周围有表格吗? 不要在jsp中直接使用sql。 因为您不将输入数据发送到第二页。为此,您需要一个表单或显式指定一个带有参数的 url,如下所示: href="permissionform.jsp?name=" 是的,隐藏字段周围有一个表格 【参考方案1】:

你可以通过一个简单的技巧来完成这项任务

更新这一行

<%
        String visitor_name = rs.getString("visitor_name");
        String link = "permissionform.jsp?name=" + visitor_name;
    %>
    <input type="text" name="name" value="<%=visitor_name%>">  
    <a href="<%=link%>"><%= visitor_name%></a>  

如果你使用这段代码,你真的不需要&lt;input&gt;标签,因为链接已经被解析了。

如果visitor_namenot null,则此name 的值将不是null

希望对您的问题有所帮助。:)

【讨论】:

【参考方案2】:

您可以使用 Session 、 Cookie 或 Context 对象在其他页面中获取变量,或者如果您有 &lt;input type="submit"/&gt; 标签,则可以使用表单标签来操作另一个页面

试试这个代码

 <td> 
     <form action="permissionForm.jsp"> 
      <input type="text" name="name" 
       value="<%=rs.getString("visitor_name")%>">  
     <input type="submit" value="<%=rs.getString("visitor_name")%>"/>
    </form>    
</td>

【讨论】:

以上是关于我正在使用隐藏输入类型来设置值并使用 request.getParameter() 在另一个页面中获取值,但它总是返回“null”的主要内容,如果未能解决你的问题,请参考以下文章

如何设置输入类型文件的值并存储在php中的数据库中?

使用用户默认值来记住隐藏或未隐藏的内容

更改隐藏值并使用 onclick for href 提交表单

输入日期值并与现有表进行比较

输入隐藏无法正常工作

Spring Boot 表单;隐藏路径值并显示占位符