2012-12-25 61 views
2

當鼠標懸停時,我得到兩個驗證消息,一個正確,然後一個在窗體的頂部,表示項目階段[開發]:未處理消息,我怎麼能隱藏這條消息?項目階段[開發]:未處理的消息 - JSF

    <h:outputLabel for="username">Please enter your username: </h:outputLabel> 
      <h:inputText id="username" value="#{user.id}" required="true"> 
       <f:ajax event="blur" render="usernameMessage" /> 
      </h:inputText> 
      <h:message id="usernameMessage" for="username" /> 

userBean.java

private static final long serialVersionUID = 1L; 

    @NotNull (message = "The username can not be blank") 
    @Size(min = 6, max=12, message = "Please enter a valid username (6-12 characters)") 
    private String id; 

    public String getId() { 
     return id; 
    } 

的web.xml

<context-param> 
    <param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name> 
    <param-value>true</param-value> 
</context-param> 

回答

3

這是一個發展的警告,應表明開發商犯了一個錯誤。根本不應該有未處理的臉部信息。提供適當的<h:message>並確保它也在ajax請求上更新。

<h:message for="Username" /> 

或者,至少提供一個通用的<h:messages>表示所有消息。

<h:messages/> 

一旦設定了JSF項目階段Production此警告(和未處理的郵件的整個列表)將消失。

<context-param> 
    <param-name>javax.faces.PROJECT_STAGE</param-name> 
    <param-value>Production</param-value> 
</context-param> 

或者只是完全刪除整個上下文參數;它已經默認爲Production


無關的具體問題,您<h:outputLabel for>屬性是錯誤的,它不符合輸入組件的ID。或者,相反,輸入組件的ID不符合標準的HTML/CSS代碼約定。它應該是camelCase,而不是TitleCase。因此,使用

<h:outputLabel for="username" ... /> 
<h:inputText id="username" ... /> 
<h:message for="username" ... /> 

所有也是你的具體問題的一個潛在的主要原因後。您已正確使用<h:message for="username"/>,但由於輸入組件使用無效組件ID Username而無法顯示消息。