2012-01-05 11 views
5

में एक शर्त के आधार पर डेटाटेबल की पंक्तियों को रंग दें मैं एक शर्त के आधार पर पंक्तियों का पृष्ठभूमि रंग बदलना चाहता हूं।जेएसएफ 2

<t:dataTable id="data" 
       styleClass="history-table" 
       headerClass="history-table-header" 
       rowClasses="history-table-row-default" 
       border="2" cellpadding="5" cellspacing="2" 
       var="entry" 
       value="#{historyBean.logEntryList}" 
       preserveDataModel="false" 
       rows="#{historyBean.history.rowCount}" 
       sortable="true"> 

      <h:column> 
       <f:facet name="header"> 
       <h:outputText value="Debug Status" /> 
       </f:facet> 
       <h:outputText value="#{entry.action}" /> 
      </h:column> 

"entry.action" का मान इलेवन उपयोग करने के लिए "इतिहास-तालिका पंक्ति-अधूरा" (styleclass का नाम), यदि मान यी है का उपयोग करना चाहते चाहते है, तो "इतिहास -टेबल-पंक्ति-त्रुटि "(स्टाइलक्लास का नाम)। अन्य सभी मामलों को डिफ़ॉल्ट मान का उपयोग करना चाहिए।

मुझे लगता है कि मुझे किसी भी तरह से मेरी बीन में प्रवेश की वर्तमान वस्तु प्राप्त करनी है, इसका विश्लेषण करें और रंग बदलने के लिए स्टाइलक्लास के नाम के साथ स्ट्रिंग क्लास के नाम के साथ एक स्ट्रिंग वापस करनी होगी। लेकिन मुझे नहीं पता कि कैसे ... (मैं जेएसएफ में नया हूं ...)

क्या कोई मेरी मदद कर सकता है?

उत्तर

11

<t:dataTable> बजाय rowClasses की rowStyleClass विशेषता का उपयोग करें। rowStyleClass का मूल्यांकन प्रति पंक्ति आधार पर किया जाता है जहां var="entry" उपलब्ध है, जबकि rowClasses केवल प्रति-तालिका आधार पर मूल्यांकन किया जाता है।

<t:dataTable ... rowStyleClass="#{entry.action == 'X' ? 'history-table-row-incomplete' : (entry.action == 'Y' ? 'history-table-row-error' : 'history-table-row-default')}"> 
+1

यह एक पार्सिंग त्रुटि का कारण है। कहना है कि मैं myfaces 2.1.5 का उपयोग करता हूं। वहाँ इसे संभालने के लिए मेरे बीन में extry.action का मूल्य पाने का कोई तरीका है? –

+0

कृपया सही पार्सिंग त्रुटि संदेश का जिक्र करें। – BalusC

+0

rowStyleClass = "# {entry.action == 'एफ'? 'इतिहास-तालिका-पंक्ति-त्रुटि': (entry.action == 'वाई'? 'इतिहास-तालिका-पंक्ति-त्रुटि': ''): ' '} "त्रुटि पार्सिंग: # {entry.action ==' एफ '? 'इतिहास-तालिका-पंक्ति-त्रुटि': (entry.action == 'वाई'? 'इतिहास-तालिका-पंक्ति-त्रुटि': ''): ''} कारण: org.apache.el.parser .ParseException - एनकॉन्टर "": "": "" लाइन 1, कॉलम 108 पर। "इनमें से एक की उम्मीद थी:"} "..." ... "[" ... ">" ... "gt" ... "<" ... "lt" ... "= =" ... "ge" ... "<=" ... "ले" ... "==" ... "eq" ... "=" ... "ne" ... "&&" ... "और" ... "|| " ... "या" ... "*" ... "+" ... "-" ... "/" ... "div" ... "%" ... "mod" –

-1

आप नीचे के रूप में JSF ईएल त्रिगुट ऑपरेटर का उपयोग कर सकते:

rowStyleClass="#{entry.action eq X ? 'history-table-row-incomplete' : (entry.action eq Y ? 'history-table-row-error' : 'default')}" 
+1

'स्टाइल क्लास' '

' पर लागू होता है, न कि ' 'पर। – BalusC

+0

किसी ने मेरी पोस्ट की मांग की! मैंने सटीक 'विशेषता' का उपयोग नहीं किया हो सकता है, लेकिन मेरा मुद्दा यह था कि ओपी को यह समझना था कि इसे ईएल और टर्नरी ऑपरेटर के साथ कैसे कार्यान्वित किया जाए। – bchetty

+2

हू? ओपी ने पूछा * "मैं एक शर्त के आधार पर पंक्तियों के पृष्ठभूमि रंग को बदलना चाहता हूं।" *। यह उत्तर इसका उत्तर नहीं देता है। तो यह जवाब गलत है। इतना ही आसान। यदि आप परेशान हैं तो बस इसे ठीक करें या हटाएं। मैं जीवन के लिए समझ नहीं सकता कि गलत उत्तरों को क्यों हटाया जाना चाहिए। यह स्टैक ओवरफ़्लो के बिंदु को पूरी तरह से नष्ट कर देगा। – BalusC