2012-07-16 80 views
2

裏面有什麼,我要實現我的JSF複合組件內部的例子:JSF 2.0的EL檢查,如果組件是有效的複合材料部件

<h:inputText id="name" value="#{cc.attrs.value.name}" styleClass="#{(component.valid) ? 'required' : 'required invalid'}" validatorMessage="bad name" requiredMessage="name required" immediate="true" required="true"> 
    <f:validateRegex pattern="^[\p{L}' ]{2,19}$" /> 
    <f:ajax event="blur" execute="name" render="name testPanel" immediate="true"/> 
</h:inputText> 

<h:inputText id="surname" value="#{cc.attrs.value.surname}" styleClass="#{(component.valid) ? 'required' : 'required invalid'}" validatorMessage="bad surname" requiredMessage="surname required" immediate="true" required="true"> 
    <f:validateRegex pattern="^[\p{L}' ]{2,19}$" /> 
    <f:ajax event="blur" execute="name" render="surname testPanel" immediate="true"/> 
</h:inputText> 

<h:panelGroup id="testPanel" styleClass="#{(!name.valid || !surname.valid) ? 'warning' : 'none'}"> 
    <h:message id="msgName" for="name" showSummary="true" showDetail="false" /> 
    <h:message id="msgSurname" for="surname" showSummary="true" showDetail="false" /> 
</h:panelGroup> 

的問題是如何評價,如果名字或姓氏是有效的/ 'testPanel'無效。我希望'msgName'和'msgSurname'這兩個消息都用樣式化的span(html輸出)打包,如果沒有'name'或'surname'的錯誤消息,則不會出現。

任何幫助表示讚賞:)

回答

4

綁定組件使用binding屬性的EL範圍:

<h:inputText binding="#{name}" ... /> 
<h:inputText binding="#{surname}" ... /> 

這種方式在styleClass屬性的EL嘗試將工作。

+0

謝謝,它的工作原理! – michal777 2012-07-16 14:38:04

+0

瞭解:)我想添加設置綁定,因爲綁定=「#{name}」不起作用,如果你在視圖中放置多個複合組件。我通過設置綁定到#{cc.name}來解決這個問題(也需要在組件的UINamingcontainer類中有適當的字段) – michal777 2012-07-23 13:54:53

相關問題