2016-04-12 11 views
1

Ich arbeite an einem Java-Projekt mit Spring MVC Framework und JSP für meine Ansichten. Ich frage mich, wie man Felder am besten repräsentiert, die von Eigenschaften in der Bean abgeleitet sind, die ich als Modellattribut verwende. In meinem Beispiel ein DisplayName-Feld, das aus allen verschiedenen Namensfeldern besteht, die eine Person haben kann (erstes, letztes, mittleres, Präfix usw.).In JSP ein Feld aus anderen Feldern in einer Bean erstellt

Zum Beispiel, wenn ich eine Person Bohne, die etwa wie folgt aussieht:

public class Person { 
    private String lastName; 
    private String firstName; 
    . 
    . 
    . 
    **A bunch more name fields here 
    . 
    . 
    . 
    **All the getters and setters here 
    . 
    . 
    . 
    public String getDisplayName() { 
     //Simple example 
     return this.firstName + " " + this.lastName; 
    } 
} 

Also, wenn ich meinen Anzeigenamen wollte mit etwas Logik all diese Felder zu kombinieren, und dann die Anzeige auf der JSP, wie Soll ich das aufbauen?

Sollte ich einen "displayName" String in meinem Controller erstellen und ihn dann als zusätzliches Modellattribut übergeben?

Sollte ich eine Methode erstellen, die dies in der Bean erstellt (siehe Beispiel oben) und dann nur auf das von der JSP zugreifen? Unter Verwendung der folgenden scheint für mich zu arbeiten:

$ {person.getDisplayName()}

Was ist der richtige Weg, um dieses Muster zu handhaben?

bearbeiten weitere Informationen In meinem Controller in einer Person-Objekt Ich Attribut als Modell

@RequestMapping(value = "/path", method = RequestMethod.GET) 
    public String getMethod(final Locale locale, final Model model, final HttpServletRequest request) { 

     Person myPerson = getThePersonFromSomewhere(); 
     model.addAttribute("person", myPerson); 

     return "the view"; 
    } 

Und dann in der JSP-Ansicht geben ich auf sie wie diese

<div> 
    First Name: ${person.firstName} 
    Display Name: ${wondering how to do this} 
</div> 
+1

Ihre Frage ist mehrdeutig. Um zu beginnen, druckt '$ {person}' alleine etwas oder nichts? (Es wird erwartet, dass 'Person # toString()' gedruckt wird). Wenn bereits nichts gedruckt wird, müssen Sie einen Schritt zurückgehen und sich darauf konzentrieren, wie Sie das Modell für die Ansicht vorbereiten, und sich nicht auf die Eigenschaften des Modells konzentrieren. – BalusC

+0

Zugriff auf die Eigenschaften vom Person-Objekt in der JSP (z. B. $ {person.firstName}). Bearbeitete Frage zu beschreiben. Vielen Dank. – Luke

+0

Oh, jetzt habe ich es. Sie möchten '$ {person.firstName} $ {person.middleName} $ {person.lastName}' in einem einzigen Aufruf wie '$ {person.displayName}'? Und Sie haben eine öffentliche Zeichenfolge getDisplayName() {return firstName + "" + middleName + "" + lastName; } 'Methode, die nichts zu drucken scheint? Warum hast du die problematische Methode nirgends gezeigt? – BalusC

Antwort

1
Display Name: ${person.displayName} 

Sollte so lange arbeiten, wie Sie eine public String getDisplayName() Methode in Ihrer Person Klasse haben und es ist die einfache und vernünftige Art und Weise, dies zu tun.