2

我想做的事:

我有一个包含很多字段(昵称、电子邮件、姓名、姓氏等)的表单,但用户必须先填写 Nick 和 Email 才能填写其他字段(这是因为我们要检查在他可以介绍他的其余信息(姓名,姓氏等)之前,另一个客户没有使用昵称和邮件。因此,用户介绍 Nick 和 Email,然后他必须按下一个名为“Validate”的按钮,如果值可用(成功验证),则启用其余字段并且用户可以继续填写表单,否则字段保留禁用并向用户显示错误。

表单将位于 JSP 中,它将被提交给 Servlet,一旦进入 servlet,我必须验证表单中的信息(我有一个 .JAR 文件包含在这个 servlet 中,验证在于调用一个函数从该库中,该函数返回一个布尔值),然后我必须将表示验证函数结果的布尔值返回到同一个 JSP 。现在在 JSP 中,我必须启用(或不启用,取决于布尔值)其余的 TextField。

我不确定这是否正确,但我试图用按钮提交,同时运行一个 javascript(onclick),它将使用 servlet 在进行验证后发送回 JSP 的这个布尔值。javascript 包含一个评估布尔值的 IF 语句,如果它为真,则启用 JSP 上的所有字段。

到目前为止的问题:

我能够将尼克和电子邮件从 JSP 发送到 Servlet 并验证值,现在我有了布尔值,但我不知道如何将它从 Servlet 发送到同一个 JSP 并使用它我用来提交信息的同一个按钮的 onclick 事件。我什至不知道是否有可能做到这一点......

如果有人能帮我解决这个问题,我将不胜感激,我是 Java 编程的新手,所以如果可能的话,我会很感激简单的解释。另外,如果有更好的方法来做我想做的事,请分享,如果有任何疑问,我会尽力解释得更好。

4

3 回答 3

2

根本不需要 JavaScript。

在您的 servlet 中,您可以将验证结果存储到请求上下文中:

req.setAttribute('checkResult', checkResult);

wherereq是类型HttpServletRequest并且checkResult是 a Boolean

然后你可以转发到你的 JSP:

RequestDispatcher dispatcher = req.getRequestDispatcher("/your.jsp");
dispatcher.forward(req, resp);

在您的 JSP 中,您可以将表单元素设置为只读,具体取决于checkResult您放入请求上下文的属性:

<textarea name="text" cols="50" rows="10" 
  <%= request.getAttribute("checkResult") != null && request.getAttribute("checkResult") ? "" : "readonly" %>
>...</textarea>

因此,如果检查无效,则<textarea>元素将包含该readonly属性。否则readonly不存在。

于 2012-09-13T16:03:52.513 回答
1

正如 Roy 提到的 AJAX 最适合您的问题。你可以使用DWR!,它使普通的java类作为AJAX服务可用,只需调用它们的方法并得到结果。太简单。

于 2012-09-13T01:36:55.543 回答
0

我认为 AJAX 更适合您的应用程序,它不需要提交整个表单,您可以将验证标志作为 plainresponseText或 well-formatted发回responseXML。你也可以使用很多好的 javascript 库,比如jQuery帮助你快速简单地发送 AJAX 请求。

于 2012-09-13T01:26:27.913 回答