JSF验证不起作用
我的以下代码未按预期工作。验证未按预期工作JSF验证不起作用,jsf,richfaces,Jsf,Richfaces,我的以下代码未按预期工作。验证未按预期工作 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facele
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title>My Registration Page</title>
<link href="stylesheet/reset.css" rel="stylesheet" type="text/css" />
<link href="stylesheet/style.css" rel="stylesheet" type="text/css" />
<link rel="icon" type="image/png" href="images/icons/favicon.png" />
<script src="script/script.js" />
</h:head>
<h:body>
<h:outputText id="progress_bar" styleClass="progress-bar" />
<a4j:jsFunction name="login" action="#{loginBean.validateUser}" />
<div id="login-container">
<div class="login-logo">
<img src="images/logo.png" />
</div>
<f:view>
<div id="loin-form">
<h1>
Log in to your account or <a href="#">sign up</a> to Get Started
</h1>
<h:form>
<h:inputText id="userName" value="#{loginBean.userName}"
label="User Name" required="true" class="txtFld">
<f:validator
validatorId="com.coinfling.validation.LoginBeanValidator" />
</h:inputText>
<h:message for="userName" style="color:red"></h:message>
<h:inputSecret id="passWord" value="#{loginBean.passWord}"
label="Password" required="true" class="pswrdFld">
<f:validator
validatorId="com.coinfling.validation.LoginBeanValidator" />
</h:inputSecret>
<h:message for="passWord" style="color:red"></h:message>
<p>
<a4j:commandLink id="forgotPasswordLink" lable="Password"
value="Forgot Your Password? " />
<a4j:commandButton id="loginButton" value="Sign In"
onclick="login();" styleClass="sign-btn" />
</p>
</h:form>
</div>
</f:view>
</div>
</h:body>
</html>
正如您所看到的,我的验证只是为任何获得输入的对象抛出了一个异常。必填字段也不起作用。未打印任何错误消息。我做错了什么
好心的问候您实际上并没有提交表单。您基本上是单独调用一个独立的bean方法。这是一个巨大的差异。要对表单执行验证,必须提交表单 更换错误的
a4j:jsFunction
方法:
<a4j:jsFunction name="login" action="#{loginBean.validateUser}" />
...
<a4j:commandButton id="loginButton" value="Sign In"
onclick="login();" styleClass="sign-btn" />
<a4j:commandButton id="loginButton" value="Sign In"
action="#{loginBean.validateUser}" styleClass="sign-btn" />
假设您的意思是“不工作”,即验证和操作方法都没有被调用(由调试器确认),那么问题是在迄今为止发布的代码中可见之外的其他地方引起的,再加上迄今为止发布的答案中的更改。首先,HTTP请求实际上是根据webbrowser的开发人员工具集发送的吗?你能成功提交Hello World JSF表单吗?我的验证器正在工作,因为我有一个调试行在那里,并且正在打印。但是没有打印抛出的异常?调用了action mettod和validator函数,但是没有打印任何验证消息。这非常有用。在将来,请像那样详细地描述这个问题,而不是像你是最终用户而不是开发人员那样“不工作”。好的,结果根本没有在表格中显示。您需要将
render=“@form”
添加到
中,以指示它在请求后更新表单。这将更新
的HTML输出,因此也会显示任何消息。我用一个例子编辑了答案。非常感谢。现在是另一个问题。我有我的a4j函数,因为在开始和结束时,我显示和隐藏了一个进度条。现在我该怎么做呢?
<a4j:commandButton id="loginButton" value="Sign In"
action="#{loginBean.validateUser}" styleClass="sign-btn" />
<a4j:commandButton id="loginButton" value="Sign In"
action="#{loginBean.validateUser}" render="@form" styleClass="sign-btn" />