我想做什么:
我有一个包含很多字段的表单(缺口,电子邮件,姓名,姓氏等)但是用户必须先填写Nick和Email才能填写其他字段(这是因为我们想要在他可以引入其余信息(姓名,姓氏等)之前检查昵称和邮件是否被其他客户使用。 因此,用户介绍Nick和Email,然后他必须按下名为“Validate”的按钮,如果值可用(成功验证),则其他字段已启用,用户可以继续填写表单,否则字段保持不变禁用,并向用户显示错误。
表单将位于JSP中,它将被提交给Servlet,一旦在servlet中我必须验证表单中的信息(我有一个.JAR文件包含在这个servlet中,验证包含在从该库调用一个函数,该函数返回一个布尔值)然后我必须将返回给同一个JSP 布尔值,该布尔值将代表validate函数的结果。 现在在JSP中我必须启用(或不支持,取决于布尔值)TextFields的其余部分。
我不确定这是否正确,但我试图用按钮提交并同时运行一个javascript(onclick),它将使用servlet在进行验证后发送回JSP的布尔值。 javascript包含一个评估布尔值的IF语句,如果它是真的,那么它将启用JSP上的所有字段。
到目前为止的问题:
我能够将来自JSP的Nick和Email发送到Servlet并进行值的验证,现在我有了布尔值,但我不知道如何将它从Servlet发送到同一个JSP并且在我用来提交信息的同一个按钮的onclick事件中使用它。我甚至不知道是否可以这样做......
如果有人能帮我解决这个问题,我会很感激,我是Java编程的新手,所以如果可能的话,我会很感激简单的解释。 此外,如果有更好的方式做我想要的,请分享,如果有任何疑问,我会尝试更好地解释它。
答案 0 :(得分:2)
根本不需要JavaScript。
在servlet中,您可以将验证结果存储到请求上下文中:
req.setAttribute('checkResult', checkResult);
req
类型为HttpServletRequest
,checkResult
为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
不存在。
答案 1 :(得分:1)
Roy提到AJAX最适合您的问题。你可以使用DWR! ,它使普通的java类可用作AJAX服务,只需调用它们上的方法并获得结果。太容易了。
答案 2 :(得分:0)
我认为AJAX更适合您的应用程序,它不需要提交整个表单,您可以将验证标志作为普通responseText
或格式良好的responseXML
发回。您还可以使用许多优秀的JavaScript库,例如jQuery
,可以帮助您快速简单地发送AJAX请求。