JSF의 사용자 정의 가시 데이터로 메시지를 표시할 때 정보에 SEVERITY를 표시합니다ERROR를 설정하지 않으면 h:message의 errorClass가 적용되지 않습니다.

10969 단어 JavaEEjsfJava
컨디션
OS : macOS Hight Sierra Version10.13.2
Eclipse : Version: Neon.3 Release (4.6.3)
GlassFish : 4.1.2
JSF : 2.2
JDK : 1.8

이러한 화면의 [비밀번호]를 입력하십시오.텍스트 상자에 사용자 정의 가시 데이터를 설정합니다.



inputPassword.xhtml
<省略>
<h:head>
  <title>入力画面</title>
  <h:outputStylesheet library="css" name="base.css"/>
</h:head>
<body>
<h:form>
  <h:outputLabel>パスワードを入力して下さい。</h:outputLabel>
  <br />
  <h:inputSecret id="password" value="#{passwordBean.password}">
    <f:validateRequired />
    <f:validateLength minimum="3" maximum="10" />
    <f:validator validatorId="passwordValidator" />
  </h:inputSecret>
  <h:message for="password" errorClass="error" />
  <br />
  <h:outputLabel>確認のためにもう&nbsp;&nbsp;1度入力して下さい。</h:outputLabel>
  <br />
  <h:inputSecret id="rePassword" value="#{passwordBean.kakuninPassword}">
    <f:validateRequired />
  </h:inputSecret>
  <h:message for="rePassword" errorClass="error" />
  <br />
  <h:commandButton value="送信" action="#{passwordBean.onClickSend}" />
</h:form>
</body>
</html>
base.css
@CHARSET "UTF-8";
.error {
    color: red;
}

SEVERITY_ERROR를 설정하지 않으면 errorClass 스타일을 메시지에 적용할 수 없습니다.



PasswordValidator.java
<省略>
/** パスワード入力画面用のカスタムバリデータ. */
@FacesValidator(value = "passwordValidator")
public class PasswordValidator implements Validator {
    private static final String KINSHI = "password";

    @Override
    public void validate(FacesContext context, UIComponent component, Object value)
            throws ValidatorException {
        String inputedValue = (String) value;
        if (inputedValue.equals(KINSHI)) {
            FacesMessage errorMessage = new FacesMessage(KINSHI + "は使えません。");
            throw new ValidatorException(errorMessage);
        }
    }
}
브라우저 개발 도구에 표시된 상태
<label>パスワードを入力して下さい。</label>
<br>
<input id="j_idt6:password" type="password" name="j_idt6:password" value="">
"passwordは使えません。
  "
<br>
<label>確認のためにもう&nbsp;&nbsp;1度入力して下さい。</label>
<br>
<input id="j_idt6:rePassword" type="password" name="j_idt6:rePassword" value="">
<span class="error">検証エラー: 値が必要です。</span>

SEVERITY_ERROR를 설정할 때 errorClass 스타일을 사용합니다.



PasswordValidator.java
<省略:他は上記コードと同じ>
            FacesMessage errorMessage = new FacesMessage(KINSHI + "は使えません。");
            errorMessage.setSeverity(FacesMessage.SEVERITY_ERROR);
            throw new ValidatorException(errorMessage);
<省略:他は上記コードと同じ>
브라우저 개발 도구에 표시된 상태
<label>パスワードを入力して下さい。</label>
<br>
<input id="j_idt6:password" type="password" name="j_idt6:password" value="">
<span class="error">passwordは使えません。</span>
<br>
<label>確認のためにもう&nbsp;&nbsp;1度入力して下さい。</label>
<br>
<input id="j_idt6:rePassword" type="password" name="j_idt6:rePassword" value="">
<span class="error">検証エラー: 値が必要です。</span>

저를 도와주신 건요.


errorClass 속성: error 메시지의 CSS 클래스 지정
  • JSF 페이지에 오류, 정보, 경고 표시 - Apache MyFaces-Apache Software Foundation
  • lab.JSF2 맞춤형 가시 데이터 샘플
  • 좋은 웹페이지 즐겨찾기