codice HTML in classe Java

4

Una domanda concettuale, ho provato a cercare su google ma non ho trovato nessuna risposta definitiva, quindi eccolo qui:

È buona norma scrivere metodi Java per restituire stringhe HTML che verranno restituite al livello di visualizzazione / presentazione?

Esempio:

public string getTextField(){
    return "<input type=\"text\"/>";
}
    
posta ipohfly 24.04.2013 - 05:20
fonte

3 risposte

7

Generalmente è considerata una cattiva idea in termini di sviluppo web "moderno". L'utilizzo di un framework basato su JavaScript come angular.js consente di separare in modo pulito il codice / logica lato client dal codice / logica lato server.

Avere l'HTML nel tuo codice Java rende difficile la convalida, difficile da sviluppare con rapidità (devi ricompilare), difficile da eseguire il debug ecc.

    
risposta data 24.04.2013 - 10:55
fonte
4

Per me questo è un enorme odore di codice, indipendentemente dal linguaggio del lato server.

Offusca il modo in cui le pagine sono costruite e rende molto più difficile capire quando si fondono preoccupazioni diverse.

Questo può rendere molto più complicato estendere, eseguire il debug e correggere un sistema.

Sarei sospettoso delle credenziali di un collega che suggerisce questo come una via da seguire.

Sarei particolarmente diffidente nei confronti di un'azienda che mi vende una soluzione e una base di codice, ad esempio. la soluzione è così complicata che devo tenerli in giro per mantenerli / estenderli.

    
risposta data 24.04.2013 - 11:35
fonte
1

Nessuna pratica è totalmente buona o totalmente malvagia, dipende sempre dal contesto. Ma alcune pratiche sono più malvagie di altre.

Per un rapido .jsp in cui il codice Java è incorporato direttamente nel modello HTML, i metodi Java che restituiscono bit di HTML sono OK. Ma per qualcosa di più grande di un attacco rapido è malvagio, perché è difficile da mantenere.

Il problema è che nelle applicazioni più grandi si desidera che qualcuno si concentri sul web design e che gli altri membri del team facciano il back-end. E per il progettista è facile capire un sistema di template decente, ma avranno grossi problemi nel cercare i frammenti di HTML generati nei metodi sepolti nel backend.

L'altro problema è che vuoi che il sistema dei template assicuri che un modello sano porti a un risultato corretto. Non sono sicuro di quale sarebbe l'equivalente Java, ma ad es. Genshi (python) controlla che XML valido entri e assicura XML valido si spegne automaticamente evitando tutte le stringhe interpola e accetta solo bit di HTML / XML come oggetti XML che contengono la rappresentazione ad albero e quindi sono sempre ben formati. Tale sistema di template fa molto per evitare lo scripting cross-site e opportunità di attacco simili.

    
risposta data 24.04.2013 - 12:48
fonte

Leggi altre domande sui tag