Как проверить, существует ли объект в Gsp или нет?
<g:each in="${clientTripInstance?.startPointJob?.passengerActivities}" status="i" var="startPassengerActivity">
<g:if test = "${startPassengerActivity?.passengerCount > 1}">
<p> ${startPassengerActivity?.activity} ${startPassengerActivity?.passengerRole?.displayName} (${startPassengerActivity?.passengerCount})
</p>
</g:if>
<g:else>
<p> ${startPassengerActivity?.activity} ${startPassengerActivity?.passengerRole?.displayName}
</p>
</g:else>
</g:each>
этот код работает нормально, когда clientTripInstance.startPointJob?.passengerActivities существует.. Есть некоторые случаи, когда clientTripInstance.startPointJob?.passengerActivities не существует... так как проверить, не существует? я не хочу отображать что-либо, если его не существует..
класс домена
class Trip {
String notes
List<PointJob> pointJobs = new ArrayList<PointJob>()
}
class PointJob {
Point point
List<PassengerActivity> passengerActivities = new ArrayList<PassengerActivity>();
}
class PassengerActivity {
PassengerRole passengerRole;
String activity;
int passengerCount;
static constraints = {
passengerRole()
activity()
passengerCount(nullable:true)
}
}
1 ответ
Решение
Разве вы не можете просто обернуть все это в другой тест, чтобы убедиться, что список не нулевой или пустой?
<g:if test="${clientTripInstance?.startPointJob?.passengerActivities}">
<g:each in="${clientTripInstance?.startPointJob?.passengerActivities}" status="i" var="startPassengerActivity">
<g:if test = "${startPassengerActivity?.passengerCount > 1}">
<p>
${startPassengerActivity?.activity} ${startPassengerActivity?.passengerRole?.displayName} (${startPassengerActivity?.passengerCount})
</p>
</g:if>
<g:else>
<p>
${startPassengerActivity?.activity} ${startPassengerActivity?.passengerRole?.displayName}
</p>
</g:else>
</g:each>
</g:if>