0

我正在创建一个应用程序,它显示数据库中的字符串。然后,此字符串将显示在无法编辑的文本框中(只读)。

我现在要求将文本框中的变量(传递的 ID)与 SQL 数据库表中的列进行比较,该列是相同的字符串。找到匹配的字符串后,我需要根据查询更新其他列。

当我使用 request.getParameter() 方法时,它的输出为空。

我需要它纯粹在jsp中完成。请帮忙。

<%@page import="java.sql.*"%>  
<%@page import="java.lang.*"%>  
<%@page import="java.io.*"%>  
<%@page language="Java"%>  

<html>  
<head>  
<script type="text/javascript">  
function move(){  
 document.getElementById('tgt1').value = document.getElementById('Allocation').value;  
 document.getElementById('Allocation').value="";  
 document.getElementById("Send").disabled=true;  
}  
function UnBlock()  
{  
    document.getElementById("tgt1").value="";  
    document.getElementById("Send").disabled=false;  
    document.getElementById("tgt2").style.display="block";  
    document.getElementById("Query_but").style.display="block";  
   }  
function UnBlock_Only(){  
    document.getElementById("Send").disabled=false;  
    document.getElementById("Query").disabled=true;  
}  
function Alloc_Insert()  
{  
    document.myform.action="Alloc_Insert.jsp";  
    document.myform.method="post";  
    document.myform.submit();  
}  
</script>  
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
<style type="text/css">  
body {  
    margin-top: 20px;  
    margin-left: 30px;  
}  
</style>  
</head>  
<body>  
    <form name="myform" method="post" action="Alloc_Insert.jsp">  
<%  
try {  
    String sessname=(String)session.getAttribute("myusername");  
    PreparedStatement ps,ps2=null;  
    ResultSet rs=null;  
    Statement st=null;  
    Connection con=null;  
    Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();  
    con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "system", "tiger");  
    ps=con.prepareStatement("select DBID from Scope1 where specialist IS Null");  
    rs = ps.executeQuery();  
    if(rs.next())  
    {  
  %>  
<input type="text" name="Allocation" size="75" id="Allocation" value="<%=rs.getString("DBID")%>" readonly="readonly">  
<%  
}  
}  
catch(Exception e){  
out.println(e);  
}  
%>  
<a href="Alloc_Insert.jsp" value="Allocate" id="Send" name="Send" onclick="Clicked()">Allocate</a><br/>  
<br/><br/><br/><br/><br/><br/>  
<table>  
<tr>  
<input type="text" id="tgt1" size="100">  
<td><input type="button"value="Query" id="Query" onClic="UnBlock()"></td>  
<td><input type="button" value="Westlaw Verification" onClick="UnBlock_Only()"></td>  
</tr><br/>  
</table><textarea name="tgt2" id="tgt2" cols="30" rows="5" style="display:none"></textarea>  
<table><tr><td><a href="Insert.jsp" style="display: none" id="Query_but" onclick="Add_Query()">Submit Query</a></td></tr></table>  
<table><tr><td><input type="text" value="" id="demo" size="75"></td></tr></table>  
</form>  
 </body>  
</html>

用于比较数据的jsp如下

<%@page import="java.sql.PreparedStatement"%>  
<%@page import="java.sql.DriverManager"%>  
<%@page import="java.sql.DriverManager"%>  
<%@page import="java.sql.Connection"%>  
<%@page import="java.sql.ResultSet"%>  
<%@page import="java.sql.ResultSet"%>  
<%@page import="java.lang.String"%>  

<html>  
    <head>  
    </head>  
    <body>  
<%   
     try{  
            ResultSet rs=null;  
            String Add=request.getParameter("Allocation.text");  
            String user=(String) session.getAttribute("myusername");  
            Class.forName("oracle.jdbc.driver.OracleDriver");  
            java.util.Date today = new java.util.Date();  
            java.sql.Timestamp t= new java.sql.Timestamp(today.getTime());  
            Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE","system","tiger");  
            PreparedStatement ps=con.prepareStatement("Update Scope1 SET ALLOCATED=?, SPECIALIST=? WHERE DBID='"+Add+"'");  
            ps.setTimestamp(1, t);  
            ps.setString(2, user);  
            /*ps.setString(3, Add_U);*/  
            ps.executeUpdate();  
            out.println(user);  
            out.println(con);  
            out.println(t);  
            out.println(Add);  
            con.commit();  
             }  
        catch(Exception e)  
                       {  
            out.println(e);  
                       }  
%>  
    </body>  
</html> 

请尽早帮助我。

谢谢你

4

1 回答 1

0

你是否得到这个语句的空值

String Add=request.getParameter("Allocation.text"); 

如果是这样,请更改为以下内容并尝试。

 String Add=request.getParameter("Allocation"); 

<input type="text" name="Allocation" size="75" 
id="Allocation" value="<%=rs.getString("DBID")%>" 
readonly="readonly"> 

问候

编辑 1

这行代码使Allocationto的值null。你在move()任何地方调用javascript函数吗?document.getElementById('Allocation').value="";

如果是这样,您应该从中获取值,tgt1因为您在此语句中分配了Allocationtgt1

    document.getElementById('tgt1').value = 
document.getElementById('Allocation').value;  

编辑 3

如果你想通过点击超链接导航到你的第二页,你可以尝试如下

<a href="Alloc_Insert.jsp?val=<%=rs.getString("DBID")%>" />

在你的第二个jsp中

request.getParameter("val").
于 2012-08-22T05:41:48.577 回答