2014-04-07 23 views
5

Ciao Ho un tag "fieldset" nella mia pagina JSFJSF attributo subordinata tag HTML5

Ora ho bisogno di condizionale aggiungere un attributo "disabile"

ho una soluzione, ma è molto brutto :

<h:outputText escape="false" value="&lt;fieldset disabled='disabled'&gt;" rendered="#{surveysHandler.surveyRunning}" /> 
<h:outputText escape="false" value="&lt;/fieldset&gt;" rendered="#{surveysHandler.surveyRunning}" /> 

c'è un bel metodo jsf 2.2?

risposta

3

Sì, c'è un nuovo fantastico modo JSF 2.2 per ottenere questo!

è possibile rendere il passthrough un elemento fieldset JSF 2.2 e passarlo una mappa di attributi come questo:

<fieldset jsf:id="fieldset"> 
    <f:passThroughAttributes value="#{customerBean.params}"/> 
</fieldset> 

Il prefisso jsf è per il nuovo JSF 2.2 namespace http://xmlns.jcp.org/jsf. Se un tag HTML ha un attributo in questo spazio dei nomi, JSF lo convertirà in un componente JSF reale nell'albero dei componenti. Pertanto è possibile utilizzare f:passThroughAttributes per aggiungere attributi provenienti da una mappa in un bean gestito.

Il getter per la proprietà params potrebbe apparire come segue (è possibile aggiungere attributi in base a qualsiasi condizione nel chicco):

public Map<String, String> getParams() { 
    HashMap<String, String> params = new HashMap<String, String>(); 
    if (disabled) { 
     params.put("disabled", "disabled"); 
    } 
    return params; 
} 

Per ulteriori informazioni sugli attributi passthrough e gli elementi, uno sguardo al mio blogpost circa HTML5 friendly markup with JSF 2.2.