Al lavoro ora ho avuto una discussione con il collega, perché ho creato una pagina che ritiene troppo generica .
La pagina ha 3 modalità (semplice, avanzata e speciale) - deve funzionare in questo modo, perché non scegliamo come vengono scritte le specifiche. in ogni modalità la pagina ha un aspetto diverso (le modifiche non sono grandi - mostra / nasconde 5 campi di testo in diverse combinazioni in base alla modalità).
Il mio collega pensa che dovrebbe essere 3 pagine e quando cambi qualcosa dovresti semplicemente unire le modifiche ad altre due modalità.
I campi ora hanno il codice come rendered="#{mode!=2}"
, ecc.
P.S. Ora la differenza è di 5 campi, ma in futuro no1 so quanto sarà cambiato .
Usiamo Seam (JSF / Facelets), ecco il codice pseudo facelet (per renderlo più facile da capire). Non l'ho inserito in panelGroup per presentare meglio il problema.
<h:output rendered="mode=2" value="Name: " />
<h:input rendered="mode=2" value="bean.name" />
<h:output rendered="mode=2" value="Surename: " />
<h:input rendered="mode=2" value="bean.surname" />
<h:output rendered="mode!=2" value="Surename: " />
<h:input rendered="mode!=2" value="bean.surname" />
<h:output rendered="mode!=2" value="#{mode==1?'My Name':'My friends name'}" />
<h:input rendered="mode!=2" value="bean.name" />
Ho duplicato la versione sarebbe simile a questo (pseudo codice)
<c:if test=mode=1>
<ui:include view=modeSimple.xhtml>
</c:if>
<c:if test=mode=2>
<ui:include view=modeAdv.xhtml>
</c:if>
<c:if test=mode=3>
<ui:include view=modeSpec.xhtml>
</c:if>
modeSimple.xhtml
<h:output value="Surename: " />
<h:input value="bean.surname" />
<h:output value="My Name" />
<h:input value="bean.name" />
modeAdv.xhtml
<h:output value="Name: " />
<h:input value="bean.name" />
<h:output value="Surename: " />
<h:input value="bean.surname" />
modeSpec.xhtml
<h:output value="Surename: " />
<h:input value="bean.surname" />
<h:output value="My friends name" />
<h:input value="bean.name" />