【发布时间】:2016-01-31 16:46:51
【问题描述】:
我是 jsf 的新手,使用 2.2.12 版本。 我在执行操作时遇到了一些问题
1)。我得到了一份清单,我需要将该清单显示为自动完成。我做了足够多的谷歌,我发现这些东西适用于无法在 jsf 中找到一些有用的primefaces。
2)。我有多个字段(输入框、密码和复选框)的表单。我需要验证一些表单字段,例如密码并符合密码匹配和电子邮件结构等。我可以通过自定义验证器执行验证。现在我的要求是,如果表单字段的验证失败,则不应通过单击表单的提交按钮来提交 ajax。表单也是由 ajax 请求提交的。 下面是我的表单代码。
<div class="email-signup" id="email-signup">
<h:form id="signupForm">
<div class="form-group">
<h:inputText value="#{userRegister.userName}" placeholder="username" class="input-text full-width" />
</div>
<div class="form-group">
<h:inputText value="#{userRegister.firstName}" placeholder="first name" class="input-text full-width" />
</div>
<div class="form-group">
<h:inputText placeholder="last name" value="#{userRegister.lastName}" class="input-text full-width" />
</div>
<div class="form-group">
<h:inputText id="email" value="#{userRegister.email}" validatorMessage="Wrong formatted email entered" class="input-text full-width" placeholder="email address">
<!-- <f:validator validatorId="emailValidator"/> -->
<f:validateRegex pattern="^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$" />
<f:ajax event="blur" render="emailMessage" />
</h:inputText>
<h:message id="emailMessage" for="email" style="color:red"/>
</div>
<div class="form-group">
<h:inputSecret id="password" value="#{userRegister.password}" class="input-text full-width" placeholder="password">
</h:inputSecret>
</div>
<!--<h:outputLabel for="confirm" value="Confirm password" />-->
<div class="form-group">
<h:inputSecret id="confirm" binding="#{confirm}" class="input-text full-width" placeholder="confirm password"/>
</div>
<div class="form-group">
<div class="checkbox">
<h:outputLabel>
<h:selectBooleanCheckbox/> Tell me about Chameleon news
</h:outputLabel>
</div>
</div>
<div class="form-group">
<p class="description">By signing up, I agree to Chameleon's Terms of Service, Privacy Policy, Guest Refund Policy, and Host Guarantee Terms.</p>
</div>
<h:commandButton value="SIGNUP" class="full-width btn-medium">
<f:ajax execute="signupForm" render="outputMessage" valueChangeListener="#{userRegister.getCallUserRegisterService}" onevent="showSignUpMessage" />
<h:outputText class="signup_message" id="outputMessage" value="#{userRegister.message !=null ? userRegister.message : ''}"/>
</h:commandButton>
</h:form>
</div>
请查看以上问题。
【问题讨论】:
-
抱歉,我已经尝试使用 valueChangeListener,但它不起作用。如果我只使用监听器,我的代码就可以工作。我会编辑这个。如果验证失败,我只想停止 ajax 请求。如果仍然令人困惑,请告诉我。