2012-05-16 204 views
4

我有幾行代碼來驗證電子郵件地址:驗證非必填字段

<h:outputText value="#{labels.eMail}: " /> 
<p:inputText size="30" maxlength="50" validatorMessage="Please provide a valid e-mail address" value="#{personelView.eMail}"> 
    <f:validateRegex pattern="[email protected]+\.[a-zA-Z]+" /> 
</p:inputText> 

當我離開的電子郵件地址字段爲空,並提交形式,它提供了驗證錯誤。爲什麼JSF正在這樣做?是不是應該用上面的代碼驗證電子郵件字段?我甚至嘗試加入:

required="false" 

仍然沒有好處。有人對此案有任何想法嗎?

+1

您的inputText的價值正在驗證對您的和我f它的值無效,你得到的錯誤,所以你需要改善你的正則表達式... TRY(。+ @。+ \。[a-zA-Z] +)? b.t.w你也可以實現一個驗證器類並接受服務器端的空字符串... – Daniel

+0

就是這樣!謝謝。 – lamostreta

回答

14

inputText價值正在驗證對您<f:validateRegex pattern="[email protected]+\.[a-zA-Z]+" />,如果它的值不是有效的,你得到的錯誤,那麼你需要提高你的正則表達式,因此將匹配你的格局或接受空字符串...

所以包裝它(),並加入了?應該做的工作

嘗試

<f:validateRegex pattern="([email protected]+\.[a-zA-Z]+)?"/>