Scrivo molte pagine JSP per viste diverse. Questi JSP recuperano gli attributi dello scope di richiesta che hanno nomi molto lunghi per evitare la sovrapposizione. Un esempio è:Convenzioni di denominazione degli attributi che risultano in lunghe espressioni EL in JSP Pagina
request.getAttribute("domain1.subdomain1.subdomain11.subdomain111.attributeName");
Equivalente a EL sarebbero:
${requestScope['domain1.subdomain1.subdomain11.subdomain111.attributeName']}
A volte, le mie espressioni EL sono molto lunghi (per esempio quando si utilizza 3 JavaBeans differenti per creare un tag HTML o chiamare funzione javascript).
La mia domanda è se la soluzione che ho trovato sia o meno una buona soluzione di programmazione. Dato il fatto che ogni vista ha il proprio ambito pagina, all'inizio del mio JSP, voglio mettere
<c:set var="attributeName" scope="page" value="${requestScope['domain1.subdomain1.subdomain11.subdomain111.attributeName']}"
E poi nelle mie espressioni EL, userò
${pageScope["attributeName"]}
Non è questo creerà confusione sull'attuale portata dell'attributo durante la lettura del codice JSP?
Anche se si sta per implementare questo, questa sarà una violazione della legge di Demeter. Non è possibile sviluppare componenti jsp per 'sottodominio111' e collegare questi componenti insieme per un componente jsp' sottodominio11' e così via? – SpaceTrucker
Questa sarebbe un'ottima soluzione, ma la convenzione di denominazione degli attributi è fuori dalla mia portata. La richiesta passa attraverso molti passaggi prima di raggiungere il JSP e ci sono persino i filtri che elaborano la richiesta dopo il JSP utilizzando alcuni attributi. Non riesco a cambiare la denominazione degli attributi nella richiesta. Non ho nemmeno la mia mano su vari controller che impostano alcuni attributi –
Dovrebbe essere '$ {pageScope [attributeName]}' (senza virgolette). –