قارن دعامات القيم الطويلة 2
سؤال
مرحبًا بالجميع ، أحاول مقارنة قيمتين باستخدام Struts2 S: إذا كانت العلامة ولكنها لا تعمل. إذا قمت بترميز القيم التي تعمل بها ولكني أريد أن تكون ديناميكية.
سلسلة المتغيرات هي من نوع سلسلة. المتغير CurrentLongValue هو من النوع الطويل.
<s:set var="stringValue" value="order"/>
<s:iterator value="listTest">
<s:set var="currentLongValue" value="value"/>
<s:if test="#currentLongValue.toString() == #stringValue" >
//Do something
</s:if>
<s:else>
//Do something else
</s:else>
</s:iterator>
بالنسبة لـ S: إذا كنت قد حاولت tostring وأيضًا المساواة (). إنه يعمل فقط إذا كنت ترمز للقيم. مثال:
<s:if test="#currentLongValue == 1234">
أي أدلة؟
شكرًا لك.
المحلول
يجب إجراء مقارنات السلسلة باستخدام equals()
ليس ==
عمل:
public Long getSomeLongValue () {
Long l = 55l;
return l;
}
public String getSomeString () {
return "55";
}
JSP:
<s:if test="someLongValue.toString().equals(someString)">
CAME IN IF
</s:if>
<s:else>
CAME IN SIDE ELSE
</s:else>
نصائح أخرى
ماذا عن تجربة الاتجاه المعاكس؟
<s:if test="#currentLongValue == Long.parseLong(#stringValue)" >
ملاحظة جانبية: لم أستخدم STRUCTS2 مباشرةً ولكني عملت مع Grails .. ألا ينبغي أن تضمن الاختبار داخل الأقواس؟
<s:if test="%{#currentLongValue == Long.parseLong(#stringValue)}" >
لا تنتمي إلى StackOverflow