我使用带有一些输入的jsf表单。需要一些输入。我通过required =“ true”检查空白处。但是我需要在提交表单之前检查是否用户只是从键盘上输入了一些空格键,原因是该值存储在数据库中,但是我不需要它。我以为可以使用jQuery方法trim()来实现,但是我是jQuery的新手,我也不知道如何实现它。
<h:form prependId="false">
<div class="row">
<div class="col-lg-3 form-group">
<label>First Name<span class="text-danger"> *</span></label>
<h:inputText value="#{userController.user.firstName}"
styleClass="form-control" id="firstName"
required="true" requiredMessage="#{bundle.common_error_empty_value}"/>
<h:message for="firstName" styleClass="validationMsg"></h:message>
</div>
<div class="col-lg-5 form-group">
<label>Last Name:<span class="text-danger"> *</span></label>
<h:inputText value="#{userController.user.lastName}"
styleClass="form-control" id="lastName"
required="true" requiredMessage="#{bundle.common_error_empty_value}"/>
<h:message for="lastName" styleClass="validationMsg"></h:message>
</div>
</div>
//etc...
</h:form>
我尝试过这样的事情。也许有人知道我如何检查空白区域。
<script type="text/javascript">
function trimInputs() {
$('form input').each(function () {
$.trim(value);
});
}
</script>
如果使用Hibernate验证程序,则可以使用@mabi的解决方案,该解决方案也将在here中进行说明。否则,您也可以编写自己的JSF验证器:
@FacesValidator
public class NoBlankSpaceValidator implements Validator{
@Override
public void validate(FacesContext context, UIComponent component,
Object value) throws ValidatorException {
//Check if user has typed only blank spaces
if(value.toString().trim().isEmpty()){
FacesMessage msg =
new FacesMessage("Incorrect input provided",
"The input must provide some meaningful character");
msg.setSeverity(FacesMessage.SEVERITY_ERROR);
throw new ValidatorException(msg);
}
}
}
并用作:
<h:inputText value="#{userController.user.firstName}"
required="true" requiredMessage="#{bundle.common_error_empty_value}"
validator="noBlankSpaceValidator"/>
另见:
您可以使用老式的方法:
<h:inputText id="lastName"
onchange="this.value = this.value.trim()"
/>
并添加所需的任何验证。 onchange在验证之前触发,因此它的作用就好像用户没有在输入的开头或结尾输入任何空格。
从“保存到数据库”位,也许只需要向相应字段添加@NotBlank
约束即可。
请参见此this answer示例。