2017-05-13 4 views
1

existiert mag ich ein verstecktes Eingabefeld erstellen:Thymeleaf: th: Wert - wenn Eigentum

<input type="hidden" th:value="${map.version} name="version"/> 

Problem:
version vielleicht ein nicht existierende Attribut noch (ich nicht über null im Gespräch bin !).
Gerade jetzt eine Ausnahme Property or field 'version' cannot be found on object

Was ich erhalte ich brauche:
Wenn es nicht existiert, th: Wert Aussage vielleicht ignoriert oder Tag

KLARSTELLUNG entfernt:
map kommt aus Spring Controller in einer Handler-Methode:

@PostMapping("/new") 
public String handleMapFormSubmit(
    @ModelAttribute("map") @Valid AddMapCommand command, BindingResult result) { 

    if (result.hasErrors()) { 
     return "map-form"; 
    } 

    // do some stuff 

    return "....."; 
} 

Problem ist, dass map (AddMapCommmand) in diesem Handler-Verfahren nicht enthält das version Attribut. In einer anderen Handler-Methode (UpdateMapCommand) tut es dies. Der springende Punkt ist zu Wiederverwendung die map-form thymeleaf Vorlage in beiden Szenarien, die fast ähnlich sind.

+0

ist 'version' Schlüssel für die Karte, die Sie hinzufügen? Wenn ja, nehmen Sie einen Blick auf http://stackoverflow.com/questions/28621301/how-to-use-map-getkey-in-thymeleaf-broadleaf-ecom – bphilipnyc

+0

ja es ist. aber es kann existieren oder nicht existieren. Ich werde den Link sehen, danke. – Dachstein

+0

Ich habe '$ {map ['version']}' versucht. Es funktioniert, wenn die Version eingestellt ist, aber eine Ausnahme auslöst, wenn nicht. – Dachstein

Antwort

1

Sie können versuchen, den instanceof Operator nur für das Objekt verwendet werden, die die Eigenschaft enthält:

<input type="hidden" 
th:if="${map instanceof T(my.project.UpdateMapCommand)}" 
th:value="${map.version} name="version"> 

Für die Zukunft ist es extrem wie map mit einer Variablen verwirrend und nicht haben die Leser interpretieren es als java.util.Map. Sie sollten Ihren Variablennamen map ändern, um ihn weniger verwirrend zu machen, oder zumindest, um die Frage zu StackOverflow zu stellen.

+0

, die mich in der richtigen Richtung. Vielen Dank. Ich stimme der Kartenbenennung zu. Ich hatte es nur eilig. Prost sowieso! – Dachstein

+0

Gibt es in Thymeleaf etwas wie: object.hasAttribute ('version')? – Dachstein

Verwandte Themen