2011-01-03 3 views

Antwort

7

Es gibt kein struts2-Tag, um dies zu tun, es gibt mehr Möglichkeiten und mehr Ausdruckskraft mit OGNL als die Struts1-Tags, jedoch scheint es keine Möglichkeit zu geben, einen String sowohl auf Null als auch auf den leeren String zu überprüfen.

Die folgenden Werke:

<s:if test="(myString == null || myString.equals(''))"> 
    myString is blank or null 
</s:if> 
<s:else> 
    The value is <s:property value="myString"/> 
</s:else> 

Der Test stützt sich auf kurzes circuting, so Test von null nicht mit dem Test auf Gleichheit geändert werden kann.

Wenn die Notwendigkeit, dies zu testen, häufig auftritt, kann es ein Designproblem geben. Bei korrekter Validierung sollten Sie keine nicht initialisierten Objekte haben, von denen die Ansicht abhängt, aber ich nehme an, dass es immer Ausnahmen gibt.

3

zu Quaternion Antwort hinzu:

  1. Sie können immer besondere Bedingungen für die Prüfung, zB MyAction.isPropertyXEmpty() ein Put es in dem <if test=...> Zustand

  2. Daran erinnern, dass in Struts2 Eigenschaften ein Verfahren in Ihrer Aktion hinzufügen sind typvoller/expressiver als in Struts. Verwenden Sie keine Strings, wenn ein anderer Typ geeigneter ist. Und Sie können sie auf Nicht-Null-Werte initialisieren (z. B. leere Strings), um die Null-Probleme zu vermeiden.

+0

JSTL wenn oder wählen Sie/wann/sonst ist immer eine gute Wahl. –

1

Um auf Steven Kommentar zu erweitern, können Sie importieren mit

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 

dann verwenden:

<c:if test="${empty myStruts2Var}"> 

oder

<c:if test="${not empty myStruts2Var}"> 
Verwandte Themen