В PrimeFaces, если включен компонент фокуса
<p: focus>
: при загрузке страницы она будет фокусироваться на первом видимом поле ввода; Если проверка не удалась, она автоматически сфокусируется на первом поле ошибки. Это работает очень хорошо, и должен использовать компонент при обработке формы. Интересно, почему не включить его по умолчанию?
В этом уроке мы покажем вам простую форму регистрации, использующую
<p: focus>
для фокусировки на поле ошибки.
Используемые инструменты:
, PrimeFaces 3.3
, JSF 2.1.11
, Затмение 4.2
, Maven 3
, Tomcat 7
1. Форма регистрации
Простая форма, имя пользователя и поле пароля.
index.xhtml
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:head>
</h:head>
<h:body>
<f:facet name="last">
<h:outputStylesheet library="default" name="css/style.css"/>
</f:facet>
<h1>PrimeFaces focus example</h1>
<div style="width: 500px">
<h:form>
<p:panel id="panel-signup">
<!-- enable focus component -->
<p:focus context="panel-signup"/>
<p:inputText id="username" required="true" label="username"
size="40" requiredMessage="Please enter your username."
value="#{userAction.username}">
</p:inputText>
<p:watermark for="username" value="Username ** "/>
<p:message for="username"/>
<p:password id="password" required="true" label="password" size="40"
requiredMessage="Please enter your password."
match="confirmPassword" value="#{userAction.password}"
maxlength="20">
</p:password>
<p:watermark for="password" value="Password ** "/>
<p:message for="password"/>
<p:password id="confirmPassword" required="true" size="40"
requiredMessage="Please confirm your password."
label="confirmPassword" value="#{userAction.password}"
maxlength="20">
</p:password>
<p:watermark for="confirmPassword" value="Type Password Again ** "/>
<p:message for="confirmPassword"/>
<p:commandButton value="Register" style="margin:20px"
action="#{userAction.register}" ajax="false"/>
</p:panel>
</h:form>
</div>
</h:body>
</html>
UserBean.java - ничего не делать, если все в порядке, перенаправить на страницу благодарности.
package com.mkyong;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
@ManagedBean(name = "userAction")
@SessionScoped
public class UserBean {
String username;
String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String register() {
return "thanks?faces-redirect=true";
}
}
2. Демо
http://локальный : 8080/primefaces/index.jsf
Рисунок: Страница загружена, фокус на первом вводе, который является полем имени пользователя.
Рисунок: проверка не пройдена, обратите внимание на первое поле, вызвавшее ошибку.
Скачать исходный код
Загрузите его - ссылка://wp-content/uploads/2012/10/primefaces-focus-example.zip[primefaces-focus-example.zip](12 КБ)
Рекомендации
, http://www.primefaces.org/showcase/ui/focus.jsf [PrimeFaces focus
витрина компонентов], http://www.primefaces.org/docs/api/3.4/org/primefaces/component/password/Password.html [PrimeFaces
пароль JavaDoc]
ссылка://тег/фокус/[фокус]ссылка://тег/простые лица/[основные лица]