JSF 2.0では、どうすれば必要なメッセージを上書きできますか?Primefacesを使用しています。これが私のコードです:
<h:body>
<p:growl id="growl" showDetail="true"/>
<h:panelGroup layout="block" styleClass="login-div">
<h:form id="login">
<p:panel header="Login">
<h:panelGrid columns="2">
<p:outputLabel for="username" value="Username" />
<p:inputText id="username" value="#{authController.username}"
autocomplete="off" required="true"
requiredMessage="Username is required" />
<p:outputLabel for="password" value="Password" />
<p:password id="password" value="#{authController.password}"
autocomplete="off" required="true"
requiredMessage="Password is required" />
</h:panelGrid>
<p:commandButton id="submit" value="Login"
actionListener="#{authController.login}" update=":growl" />
</p:panel>
</h:form>
</h:panelGroup>
<p:ajaxStatus styleClass="ajaxLodingStatus">
<f:facet name="start">
<p:graphicImage value="/resources/images/loading.gif" />
</f:facet>
<f:facet name="complete">
<p:outputLabel value="" />
</f:facet>
</p:ajaxStatus>
</h:body>
これGrowl
で、概要と詳細の両方として「ユーザー名が必要です」と表示されFacesMessage
ます。これはパスワードフィールドでも同じです。
これactionListener
で、コマンドボタンのから、ログインの試行が失敗したときに、希望する方法で表示されます。
getFacesContext().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, "Login Error", "Invalid Credential"));
ただし、概要として「無効な入力」、詳細として「ユーザー名が必要」を表示したいと思います。
バックエンドからこれらの2つの入力フィールドを検証し、次のように追加すると、次のFacesMessage
ようになります。
if(username == null || username.trim().length() == 0) {
getFacesContext().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Invalid input", "Username is required."));
}
それは私が必要なものを示しています。required="true"
ただし、入力コンポーネントで属性を指定する必要はありません。
しかし、この属性を使用したいのですが、での表示required
方法もカスタマイズしたいと思います。これどうやってするの?FacesMessage
Growl
アップデート:
これが私のバッキングBeanです:
@ManagedBean(name = "authController")
@ViewScoped
public class AuthController extends BaseWebController implements Serializable {
private static final long serialVersionUID = 2894837128903597901L;
private String username;
private String password;
public AuthController() {
super();
}
public void login(ActionEvent event) {
getFacesContext().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, "Login Error", "Invalid Credential"));
}
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;
}
}
そして現在、actionaListener
いくつかの入力がある場合にのみ発火しています。それ以外の場合、フィールドが空白の場合、Growl
は次のように表示されます。
そして、ログインボタンをクリックした後:
ショーケースに示されているように
私が欲しいのは、入力されたユーザー名が必要に応じて検証に失敗した場合、次のGrowl
ように表示されます。
- 概要:入力が無効です。
- 詳細:ユーザー名が必要です。
そして、入力パスワードについては:
- 概要:入力が無効です。
- 詳細:パスワードが必要です。
どうすればこれを達成できますか?出来ますか?