我要求将项目中用户使用的用户名与已注册的其他用户名进行比较。用户名应该是不同的。为此,输入在newuser.jsp中获取,后者又调用SemanticSearch.java中的函数searchForUsername。当新用户注册时,即使检查了电子邮件ID以进行验证,并且稍后在键入用户名时,也需要进行上述检查。 我试过一种不起作用的方法。请指出我在做什么错误?
我在SemanticSearch.java中的代码有构造函数:
public SemanticSearch() {}
验证电子邮件ID后会跟随以下代码。
我在newuser.jsp中的代码是
SemanticSearch myclass=new SemanticSearch();
boolean rets=myclass.searchForUsername(username);
if (rets==false)
{
alert("Username already exists");
document.getElementById("username").value="";
document.getElementById("password").value="";
document.getElementById("username").focus();
}
在adduser按钮的click事件期间,必须调用此函数。但在点击功能期间似乎没有任何事情发生。请帮忙。
答案 0 :(得分:5)
您正在混合使用Java和JavaScript语言。这是不正确的。它们都是在不同环境中运行的不同语言。 Java在webserver中运行,JavaScript在webbrowser中运行。
基本上有两种方法可以达到要求。
创建一个监听某个URL的servlet,执行验证作业,然后让表单提交给它,让servlet返回到使用JSP / EL显示错误消息的同一页面。您可以在我们的servlet wiki page。
创建一个监听某个URL的servlet,执行验证工作,然后让您的JavaScript代码通过Ajax技术调用它,并相应地修改HTML DOM以添加错误消息。您可以在this question的答案中找到答案。
答案 1 :(得分:1)
您的代码应如下所示。 jsp文件中的所有java代码都需要用“<%”和“%>”
括起来<%
SemanticSearch myclass=new SemanticSearch();
boolean rets=myclass.searchForUsername(username);
if (rets==false)
{
%>
alert("Username already exists");
document.getElementById("username").value="";
document.getElementById("password").value="";
document.getElementById("username").focus();
<%
}
%>
答案 2 :(得分:0)
<%
SemanticSearch myclass=new SemanticSearch();
boolean rets=myclass.searchForUsername(username); // how do you get username on button click and assign it to this variable?
if (rets==false)
{
%>
我猜您可以将Java变量分配给JavaScript变量
var username = '<%= username%>';
但反之亦然吗?
<%String username = %>document.getElementById("username").value<%:%>
我更喜欢BalusC的方法(第一个),对于这种情况的javascript验证可能有风险,因为大多数浏览器都支持禁用javascript。